'起動したブックを選択 Workbooks("Book1.xlsx").Activate
'新規作成したブックを選択 Workbooks("Book2").Activate
'コードのあるブックを選択 ThisWorkbook.Activate
'開いているブックのインデックス番号で選択 Workbooks(2).Activate
ブックを選択するには「Activate」を使用します
この際にブック名を拡張子まで含めて指定することで、特定のブックを選択できます
例コードの1つ目と2つ目で拡張子を含むか含まないかの違いがあります
これが新規作成ブックの注意点です
ブックの新規作成時は、ファイルの拡張子が決まっていません
そのため、新規ブックに関しては拡張子を含めないファイル名で指定を行います
「Workbooks(“Book1.xlsx“)」標準形式で保存済み
「Workbooks(“Book2“)」未保存
そして、当然ですが処理の途中でBook2を保存した場合、以降は拡張子を含めないと画像の様にエラーになってしまいます
こういった観点からも、新規作成したブックに処理を継続する場合はオブジェクト変数に代入して処理をしたほうが確実にブックを特定できます
3つ目の例コードでは相対的な選択方法になります
実行中のプロシージャのブックを選ぶには「ThisWorkbook.Activate」を使用します
「ThisWorkbook」というのが、実行中処理の親ブックとなります
上記のブック名指定よりも確実かつ可読性が高いので、自分のブックを使用する場合はこのオブジェクトを使用します
また、オブジェクト変数に入れるのが面倒な場合はインデックス番号で指定する方法もいいと思います
これは起動した順番になっているので、処理のあるブック以外を閉じる処理を入れるか、処理開始時点のブック数を取得しておき新規作成を行えば新規作成されたブックのインデックス番号が特定できます
このインデックス番号で処理を行えば名前が変わっても、保存して拡張子が付いても問題なく処理が行えるようになります
関連の記事