【VBA】 0.3 本サイトで使用するサンプルマクロとサンプルデータの解説

目次

サンプルマクロとサンプルデータの概要

本サイトのExcelVBAの解説においては、特別な記述がない限りは、以下に記載するフォルダ構成に配置されたサンプルマクロとサンプルデータを用いて解説を行います。

03_folder_image

サンプルマクロとサンプルデータは、以下のファイル名となります。

ファイル種別ファイル名
マクロファイル社員データ抽出マクロ.xlsm
入力ファイル入力ファイル.xlsx
出力ファイル出力ファイル.xlsx

マクロファイルの解説

マクロファイルには、以下の2つのワークシートが存在します。

ワークシート種別解説

マクロシート
(シート名:社員データ抽出マクロ)
マクロ操作者が入力ファイル、出力ファイルのフルパス・ファイル名を自由に変更できるようになっている。
ボタンをクリックすることにより、マクロが実行される。
基本的なマクロの処理は、入力ファイルを読み込み、そのデータに対して何らかの処理を行い、その結果を出力ファイルに出力する。

作業シート
(シート名:work)
マクロの処理の途中で出力シートに出力する前に、一時的な作業が必要になった場合に使用するワークシート。
お作法として、使用の前後でワークシートをクリアする処理を行う。
必ず使用しなければならないワークシートではない。

マクロシートは、以下のようなイメージです。

マクロファイル内のサンプルコード

マクロファイル内に設定しているサンプルコードは以下の通りです。
このサンプルコードには、変数の宣言、前処理、後処理のみですが、各章でのオブジェクト/プロパティ/関数等の解説ページでは、このサンプルコードを用いて、前処理と後処理の間に何らかの処理を行うプログラムを記述します。

Option Explicit

Sub extract_employeelist()

    Dim ws_macro As Worksheet           '社員データ抽出マクロファイル内の社員データ抽出マクロシートのワークシート変数
    Dim ws_work As Worksheet            '社員データ抽出マクロファイル内のworkシートのワークシート変数
    Dim wb_inputfile As Workbook        '入力ファイルのワークブック変数
    Dim ws_employeelist As Worksheet    '入力ファイルの社員一覧シートのワークシート変数
    Dim ws_departmentlist As Worksheet  '入力ファイルの部署一覧シートのワークシート変数
    Dim ws_positionlist As Worksheet    '入力ファイルの役職一覧シートのワークシート変数
    Dim path_inputfile As String        '入力ファイルのフルパスを設定する変数
    Dim wb_outputfile As Workbook       '出力ファイルのワークブック変数
    Dim ws_outputfile As Worksheet      '出力ファイルの出力結果シートのワークシート変数
    Dim path_outputfile As String       '出力ファイルのフルパスを設定する変数
    
    'マクロが実行する処理を画面上に出力しないよう、画面更新モードをオフにします。
    'これにより、処理時間が短縮されます。
    
    Application.ScreenUpdating = False

    'マクロファイル内のワークシートに対して、ワークシート変数を設定します。
    
    Set ws_macro = ThisWorkbook.Worksheets("社員データ抽出マクロ")
    Set ws_work = ThisWorkbook.Worksheets("work")
    
    '入力ファイルのフルパスを設定する変数:path_inputfile に、パス情報を設定します。
    
    If Right(ws_macro.Range("D3"), 1) <> "\" Then
        path_inputfile = ws_macro.Range("D3") & "\" & ws_macro.Range("C3")
    Else
        path_inputfile = ws_macro.Range("D3") & ws_macro.Range("C3")
    End If
    
    '出力ファイルのフルパスを設定する変数:path_outputfile に、パス情報を設定します。
    
    If Right(ws_macro.Range("D4"), 1) <> "\" Then
        path_outputfile = ws_macro.Range("D4") & "\" & ws_macro.Range("C4")
    Else
        path_outputfile = ws_macro.Range("D4") & ws_macro.Range("C4")
    End If
    
    '入力ファイルをOpenします。
    'ファイルをOpenした直後は、OpenされたファイルがActiveWorkbook になります。
    'その法則を利用し、ワークブック変数:wb_inputfileをActiveWorkbookに設定します。
    '更に、入力ファイルに存在する3つのワークシート変数にも、ワークシートを設定します。
    
    '以上の「ファイルのOpen」→「ワークブック変数、ワークシート変数の設定」を行うことにより、
    'これ以降の処理でワークブック変数、ワークシート変数を使用することができるようになります。
    
    Workbooks.Open Filename:=path_inputfile
    Set wb_inputfile = ActiveWorkbook
    Set ws_employeelist = ActiveWorkbook.Worksheets("社員一覧")
    Set ws_departmentlist = ActiveWorkbook.Worksheets("部署一覧")
    Set ws_positionlist = ActiveWorkbook.Worksheets("役職一覧")
    
    '出力ファイルにも、入力ファイルと同様の処理を行います。
    
    Workbooks.Open Filename:=path_outputfile
    Set wb_outputfile = ActiveWorkbook
    Set ws_outputfile = ActiveWorkbook.Worksheets("出力結果")
    
    'ここまでが前処理となります。
    'ここから後処理までの間に、要件・仕様に従って、プログラムを記述します。
    
    
    
    'ここからが後処理となります。
    
    'マクロがOpenした入力ファイル、出力ファイルに対して、何もせずに終了すると、
    '画面上に入力ファイル、出力ファイルが表示されたままとなり、お行儀が悪いので、
    'マクロファイル以外のファイルは、基本的に全てCloseします。
    
    '出力ファイルを、変更があった場合には保存して終了します。
    
    wb_outputfile.Close SaveChanges:=True
    
    '入力ファイルを、変更の有無に関わらず、保存せずに終了します。
    
    wb_inputfile.Close SaveChanges:=False
    
    'マクロ実行者に、処理が完了した旨のダイアログ画面を出力します。
    
    MsgBox "社員データの抽出が完了しました。"
    
    '社員データ抽出マクロシートを最前面に表示します。
    
    ws_macro.Activate
    
    '社員データ抽出マクロファイルを保存します。
    
    ThisWorkbook.Save
    
    '念のため、画面更新モードをオンに戻します。
    
    Application.ScreenUpdating = True
    
End Sub

入力ファイルの解説

入力ファイルには、以下の3つのワークシートが存在します。

ワークシート種別解説
社員一覧シート社員番号、氏名、メールアドレス等の社員の属性情報を持っているワークシート。
部署一覧シート部署コードや部署名等の社内の部署に関する情報を持っているワークシート。
役職一覧シート役職コードと役職名のマスターデータの情報をもっているワークシート。

上記のそれぞれのワークシートのデータは、以下の通りです。

・社員一覧シート

社員番号氏名氏名カナメールアドレス部署コード役職コード主務・兼務フラグ入社日退職日
100001日本 一郎ニホン イチロウichiro@emalabo.com01995/4/12022/3/31
100002日本 二郎ニホン ジロウjiro@emalabo.comA01001B02102000/4/1
100003日本 三郎ニホン サブロウsaburo@emalabo.comA01001B03102005/7/15
100004日本 四郎ニホン シロウshiro@emalabo.comA01001B04102010/4/1
100005日本 五郎ニホン ゴロウgoro@emalabo.comA01001B99902018/4/1
100006日本 六郎ニホン ロクロウrokuro@emalabo.comA11001B02101999/10/1
100007日本 七郎ニホン ナナロウnanaro@emalabo.comA11001B03102001/4/1
100008日本 八郎ニホン ハチロウhachiro@emalabo.comA11001B04102012/4/1
100009日本 九郎ニホン キュウロウkyuro@emalabo.comA11001B99902020/4/1
100010日本 十郎ニホン ジュウロウjuro@emalabo.comA11001B99902023/4/1

・部署一覧シート

事業部コード部署コード事業部名部署名適用開始日適用終了日
A01A01001営業事業部営業1部2024/1/12024/12/31
A01A01002営業事業部営業2部2024/1/12024/12/31
A11A11001開発事業部開発1部2024/1/12024/12/31
A11A11002開発事業部開発2部2024/1/12024/12/31

・役職一覧シート

役職コード役職名
B001社長
B011取締役
B021事業部長
B031部長
B041課長
B999なし

出力ファイルの解説

出力ファイルには、マクロが処理結果を出力するための出力結果出力シートが存在します。

サンプルマクロとサンプルデータのダウンロード

以下のダウンロードボタンをクリックすると、サンプルマクロとサンプルデータをZip形式で圧縮したファイルをダウンロードすることができます。

この記事を書いた人

某IT企業に勤務。

2年間の休職を経て、一から独学でExcel VBAを習得し、半年でExcel VBA エキスパート資格のスタンダードに一発合格。

社内の非効率的な作業を効率化するExcelマクロの開発を、全行程まるっと一人で請け負い、これまでに約100個のExcelマクロを開発し、現在も増産中。

目次