教えて!ExcelVBA!

ExcelVBAの基礎知識・書き方について紹介します。

【ExcelVBA ブック操作】ブック名(ファイル名)を取得(Name)するにはどうすればいいの?教えて!

f:id:m_kbou:20200418124458p:plain

ExcelVBAでブックの名前(ファイルの名前)を取得する場合は、Nameプロパティを使用します。今回は「ThisWorkBook.Name」と「ActiveWorkBook.Name」の2つの使用方法について紹介します。プログラミングをする上で頻繁に使用しますので、是非覚えておいて下さい。

 

 

構文

記述方法は以下の通りとなります。

(1)ThisWorkbookの記述方法

ThisWorkBook.Name

[説明]:

「ThisWorkBook.Name」は現在マクロが実行されているファイル名を取得する記述となります。内容を纏めると、「マクロが実行されているファイル名を取得して下さい。」との意味になります。

(2)ActiveWorkBookの記述方法

ActiveWorkBook.Name

[説明]:

「ActiveWorkBook.Name」は現在アクティブとなっているファイル名を取得する記述となります。内容を纏めると、「アクティブになっているファイル名を取得して下さい。」との意味になります。(※ブックを複数開いている場合、その中でもアクティブになっているファイル名を取得します。) 

 

使い方

使い方について具体的に説明していきます。

ThisWorkbookの使い方

ThisWorkbookの使い方について説明します。

[プログラミング例]:

Sub サンプル()
  Workbooks.Open "C:\テスト\Book1.xlsx"
  MsgBox ThisWorkbook.Name
End Sub 

内容は、「最初にC:\テストに登録されているBook1.xlsxファイルを開き、マクロを実行しているファイル名をMsgBoxで表示して下さい。」との意味になります。(※Book1.xlsxファイルを開く事で、アクティブファイルはBook1.xlsxになります。)

f:id:m_kbou:20210309072349p:plain

※上記の記述例は、VBE(VBA記述画面)に記述しないと実行ができません。VBEの開き方についてはこちらを参考にして下さい。

[実行例]:

※事前準備として、C:\テストにBook1.xlsxファイルを登録しておきます。

f:id:m_kbou:20210309072909p:plain

①今回は例として演習.xlsmファイルを作成し、以下の様に<実行>ボタンを設置します。<実行>ボタンには上記のプログラミング例のプログラムが登録されています。この<実行>ボタンをクリックします。(※ボタンの作り方やボタンにプログラムを割り当てるにはこちらを参考にして下さい。)

f:id:m_kbou:20210309080252p:plain

②C:\テストに登録したBook1.xlsxファイルが開き、「演習.xlsm」がMsgBoxで表示されます。(※ここでも分かる通り、この状態ではBook1.xlsxファイルがアクティブファイルになりますが、ThisWorkbook.Nameはアクティブファイルの名前を取得するのではなく、マクロが実行されているファイル名を取得する事が分かります。)

f:id:m_kbou:20210309080318p:plain

[サンプル]:

上記で説明したファイルをダウンロードできます。ご自由にお使い下さい。

drive.google.com

ThisWorkbookの使い方についての説明は以上です。

 

ActiveWorkBookの使い方

ActiveWorkBookの使い方について説明します。

[プログラミング例]:

Sub サンプル()
  Workbooks.Open "C:\テスト\Book1.xlsx"
  MsgBox ActiveWorkbook.Name
End Sub

内容は、「最初にC:\テストに登録されているBook1.xlsxファイルを開き、アクティブになっているファイル名をMsgBoxで表示して下さい。」との意味になります。(※Book1.xlsxファイルを開く事で、アクティブファイルはBook1.xlsxになります。)

f:id:m_kbou:20210309082321p:plain

※上記の記述例は、VBE(VBA記述画面)に記述しないと実行ができません。VBEの開き方についてはこちらを参考にして下さい。

[実行例]:

※事前準備として、C:\テストにBook1.xlsxファイルを登録しておきます。

f:id:m_kbou:20210309072909p:plain

①今回は例として演習.xlsmファイルを作成し、以下の様に<実行>ボタンを設置します。<実行>ボタンには上記のプログラミング例のプログラムが登録されています。この<実行>ボタンをクリックします。(※ボタンの作り方やボタンにプログラムを割り当てるにはこちらを参考にして下さい。)

f:id:m_kbou:20210309082339p:plain

②C:\テストに登録したBook1.xlsxファイルが開き、「Book1.xlsx」がMsgBoxで表示されます。(※ここでも分かる通り、この状態ではBook1.xlsxファイルがアクティブファイルとなるため、ActiveWorkBook.Nameはアクティブファイルの名前を取得する事が分かります。)

f:id:m_kbou:20210309082351p:plain

[サンプル]:

上記で説明したファイルをダウンロードできます。ご自由にお使い下さい。

drive.google.com

ActiveWorkBookの使い方についての説明は以上です。

 

おわりに

ThisWorkbookとActiveWorkBook共に結果は同じように見えますが、違いとしては、ThisWorkbookは現在マクロが実行されているファイル名が取得され、ActiveWorkBookは現在表示(アクティブ)されているファイル名が取得されます。似ている様で意味が違うため、間違った使い方をしない様に注意して下さい。