
ThisWorkbook
と ActiveWorkbook
の違いってなに?
どっちを使えば正しいの?
間違えると何が起きるの?
結論:ThisWorkbookは「マクロを含むブック」、ActiveWorkbookは「今アクティブなブック」



この2つの違いを正しく理解しておかないと、保存先を間違えたり、意図しないファイルを閉じてしまったりと、実務でのトラブルに繋がることもあります。
目次
それぞれの定義
ThisWorkbookとは?
「マクロが記録・保存されているブック」を指します。
ThisWorkbook.Save



上記のコードは「このマクロが入っているブックを保存する」命令です。
ActiveWorkbookとは?
ActiveWorkbookとは?
「今、アクティブ(選択中)のブック」を指します。
ActiveWorkbook.Save



これは「現在操作しているブックを保存する」命令になります。
例でわかる2つの違い
シナリオ
- BookA.xlsm(マクロが入っているブック)を開く
- マクロを実行して、BookB.xlsxを開く
- BookB.xlsxがアクティブな状態でマクロが続行
この時に次のコードを実行したらどうなる?
ThisWorkbook.Save ActiveWorkbook.Save
ThisWorkbook.Save
→ BookAが保存される
ActiveWorkbook.Save
→ BookBが保存される
よくある間違いとその対策
❌ 間違い例
ActiveWorkbook.SaveAs "C:\temp\保存先.xlsx"



つもりは「このマクロが入ってるファイルを保存」だったのに、開いていた別ファイルを上書きしてしまう可能性があります。
✅ 対策
ThisWorkbook.SaveAs "C:\temp\保存先.xlsx"



明確に「このマクロファイル」と指定することで意図しない操作を防げます。
どちらを使えばよいかの判断基準
状況 | 適切な指定 | 理由 |
---|---|---|
マクロ本体に対する操作 | ThisWorkbook | マクロがどのブックにあるか明確だから |
ユーザーが開いた他のブックに対する操作 | ActiveWorkbook | 実際にアクティブなファイルを対象にしたいから |
確実な保存や閉じ処理を行いたいとき | ThisWorkbook | 安全性が高く、意図を誤らない |
実務での使用パターン
① マクロ本体の保存や閉じ処理
ThisWorkbook.Save ThisWorkbook.Close SaveChanges:=True



マクロの設定ファイルや管理シートでよく使います。
② ユーザーが操作する任意のファイルを対象とする処理
ActiveWorkbook.Sheets("報告書").PrintOut



「開いたブックに処理をする」系のマクロで多用されます。
まとめ
ThisWorkbook = このマクロがあるブック(いつでも同じ)
ActiveWorkbook = ユーザーが現在アクティブにしているブック(変動する)
間違えると保存先や出力先がズレるため、意図を明確にして使い分けることが重要
コメント