目次
サンプルマクロとサンプルデータの概要
本サイトのExcelVBAの解説においては、特別な記述がない限りは、以下に記載するフォルダ構成に配置されたサンプルマクロとサンプルデータを用いて解説を行います。
サンプルマクロとサンプルデータは、以下のファイル名となります。
ファイル種別 | ファイル名 |
---|---|
マクロファイル | 社員データ抽出マクロ.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.com | 0 | 1995/4/1 | 2022/3/31 | ||
100002 | 日本 二郎 | ニホン ジロウ | jiro@emalabo.com | A01001 | B021 | 0 | 2000/4/1 | |
100003 | 日本 三郎 | ニホン サブロウ | saburo@emalabo.com | A01001 | B031 | 0 | 2005/7/15 | |
100004 | 日本 四郎 | ニホン シロウ | shiro@emalabo.com | A01001 | B041 | 0 | 2010/4/1 | |
100005 | 日本 五郎 | ニホン ゴロウ | goro@emalabo.com | A01001 | B999 | 0 | 2018/4/1 | |
100006 | 日本 六郎 | ニホン ロクロウ | rokuro@emalabo.com | A11001 | B021 | 0 | 1999/10/1 | |
100007 | 日本 七郎 | ニホン ナナロウ | nanaro@emalabo.com | A11001 | B031 | 0 | 2001/4/1 | |
100008 | 日本 八郎 | ニホン ハチロウ | hachiro@emalabo.com | A11001 | B041 | 0 | 2012/4/1 | |
100009 | 日本 九郎 | ニホン キュウロウ | kyuro@emalabo.com | A11001 | B999 | 0 | 2020/4/1 | |
100010 | 日本 十郎 | ニホン ジュウロウ | juro@emalabo.com | A11001 | B999 | 0 | 2023/4/1 |
・部署一覧シート
事業部コード | 部署コード | 事業部名 | 部署名 | 適用開始日 | 適用終了日 |
---|---|---|---|---|---|
A01 | A01001 | 営業事業部 | 営業1部 | 2024/1/1 | 2024/12/31 |
A01 | A01002 | 営業事業部 | 営業2部 | 2024/1/1 | 2024/12/31 |
A11 | A11001 | 開発事業部 | 開発1部 | 2024/1/1 | 2024/12/31 |
A11 | A11002 | 開発事業部 | 開発2部 | 2024/1/1 | 2024/12/31 |
・役職一覧シート
役職コード | 役職名 |
---|---|
B001 | 社長 |
B011 | 取締役 |
B021 | 事業部長 |
B031 | 部長 |
B041 | 課長 |
B999 | なし |
出力ファイルの解説
出力ファイルには、マクロが処理結果を出力するための出力結果出力シートが存在します。
サンプルマクロとサンプルデータのダウンロード
以下のダウンロードボタンをクリックすると、サンプルマクロとサンプルデータをZip形式で圧縮したファイルをダウンロードすることができます。