本記事はエクセル2019で動作確認を行っています。

本記事はこのような疑問にお答えします。
これからVBAを学ぶ方がスムーズに学習を進められる手助けをしていきます。

エクセルでは複数のブックをまたいで、画面を切り替えながら操作することがあります。
VBAコードを指定したブックに対応させるために、ブックの操作方法を知っておきましょう。
前提としておさえておくおポイントは
・ブック一つをWorkbookオブジェクト
・ブックが複数存在する場合、WorkbookオブジェクトをまとめてWorkbooksコレクション
と呼びます。
ブックの指定方法
ブックは以下のように表すことができます。
<Workbookオブジェクト>
Workbooks(1)
→一つ目に開いたブック
Workbooks(“ブック名”)
→ブック名を「”(ダブルクォーテーション)」で囲む。
後述した記述方法の方が後でコードを見たとき可読性が高まります。
できるだけブック名を指定するようにしましょう。
Workbookの書き方が分かれば、次はブックの指定方法を知っておきましょう。
希望のブックを選択するにはActivateメソッドを使用します。
(式)
Workbooks(“ブック名”).Activate
Sub ブック指定() Workbooks("Book2").Activate End Sub
(実行前)
(実行後)
Book1からBook2へ操作するブックが変わりました。
VBAでは操作したいブックを前面に出しておくことでコードの対象が決まります。
必ず操作するブックをActivateで指定するようにしましょう。
アクティブ状態ではその後のコードにWorkbookの記述は省略することはできますが、Worksheetは必ず指定するようにすることをおすすめします。
開くブックが1つだけということは現場では少ないかもしれません。
複数の場合は、ブックが変わるごとにブックをActivateする。
アクティブ中はWorkbookは省略してもいいが、Worksheetは指定するでいきましょう。
作業中のブックの参照方法
(式)
ActiveWorkbook
現在作業中のブックはActiveWorkbookプロパティで指定することができます。
Sub 作業中のブック() ActiveWorkbook.Worksheets("Sheet1").Range("A1").Value = "作業中" End Sub
(実行後)
ブックの名前やパス名を取得する
ブックの名前やパス名を知るにはWorkbookオブジェクトの以下のプロパティを指定することで得ることができます。
(式)
オブジェクト.Name
オブジェクト.Path
オブジェクト.FullName
Nameプロパティではブック名を取得できます。
(例)ActiveWorkbook.Name→Book1.xlsm
Pathプロパティではパス名を取得できます。
(例)ActiveWorkbook.Path→C:\Users\ \Desktop\sampleVBA
FullNameプロパティではパス名+ブック名を取得できます。
(例)ActiveWorkbook.FullName→C:\Users\ \Desktop\sampleVBA¥Book1.xlsm
ファイルの階層が下に行くごとに「¥」でつなげていきます。
ブックの指定方法について解説しました。
ブックに関する内容は以下もご参考ください。
最後まで目を通していただきありがとうございます。