Excel VBAでコードを書き始めると、多くの人がThisWorkbookとActiveWorkbookという2つのキーワードに遭遇します。これらはどちらもブックを指しているように見えますが、その意味は全く異なり、この違いを理解していないと、意図しないブックを操作してしまい、マクロがエラーを起こす原因になります。
この記事では、VBAプログラミングの基本でありながら非常に重要な、ThisWorkbookとActiveWorkbookの決定的な違いと、どちらをいつ使うべきかという指針を明確に解説します。
ThisWorkbook とは? – コードが書かれているブック
ThisWorkbookは、そのVBAコードが記述・保存されているExcelファイルそのものを、常に指し示します。
これは不変の参照であり、ユーザーが他のExcelファイルを開いたり、アクティブなウィンドウを切り替えたりしても、ThisWorkbookが指すブックは決して変わりません。
✓ アナロジー: ThisWorkbookはあなたの「自宅」のようなものです。どこに出かけて何を見ていても、あなたの「自宅」の場所は変わりません。
コード例
このコードは、どのブックがアクティブな状態であっても、必ず「このマクロが保存されているブック」のSheet1のセルA1を操作します。
Sub ManipulateThisWorkbook()
' このマクロが保存されているブックの「Sheet1」のセルA1に値を書き込みます
ThisWorkbook.Worksheets("Sheet1").Range("A1").Value = "This is the Macro book."
' どのブックがアクティブでも、常にこのマクロのブックが操作されます
MsgBox "「" & ThisWorkbook.Name & "」のセルを操作しました。"
End Sub
ActiveWorkbook とは? – 現在アクティブなブック
ActiveWorkbookは、その時点でExcelの画面上で一番手前に表示されている、現在アクティブなブックを指します。
これは可変の参照であり、ユーザーがクリックして別のブックのウィンドウをアクティブにすれば、ActiveWorkbookが指す対象もその瞬間に切り替わります。
✓ アナロジー: ActiveWorkbookは「今あなたが見ている景色」のようなものです。顔を向ける方向を変えれば、「見ている景色」も変わります。
コード例
このマクロを実行する前に、複数のExcelブックを開いておき、クリックしてアクティブなブックを切り替えてから試すと、結果が変わることが分かります。
Sub ShowActiveWorkbookName()
' 現在一番手前に表示されているブックの名前を表示します
' 実行する前に、別のブックをクリックしてアクティブにしてみてください
If ActiveWorkbook Is Nothing Then
MsgBox "アクティブなブックがありません。"
Else
MsgBox "現在アクティブなブックは「" & ActiveWorkbook.Name & "」です。"
End If
End Sub
正しい使い分けと注意点
この2つのキーワードの使い分けは、マクロの安定性を左右する非常に重要なポイントです。
ThisWorkbook を使うべき時:
- マクロが保存されているブック内のシート(例: 設定シート、データマスタ、ログシート)を読み書きする時。
- ユーザーの操作に影響されずに、常に特定のブックを基準として操作したい時。
- 結論: 自ブック内の操作が基本。迷ったらこちらを使うのが安全。
ActiveWorkbook を使うべき時:
- 開いている任意のファイルに対して処理を行う、汎用的なツール(アドインなど)を作成する時。
- マクロの目的が「ユーザーが今開いているファイルに対して何かをすること」であると明確な場合。
- 結論: ユーザーがアクティブにしているブックを意図的に操作したい場合に限定して使う。 ただし、マクロの冒頭で
Set myBook = ActiveWorkbookのように変数に格納し、処理の途中で対象が変わらないように固定する工夫が推奨されます。
まとめ
ThisWorkbookとActiveWorkbookの違いを、一言でまとめると以下のようになります。
| キーワード | 指す対象 | 特徴 |
ThisWorkbook | コードが記述されているブック | 不変・安定的。 ユーザー操作の影響を受けない。 |
ActiveWorkbook | 現在アクティブなブック | 可変・動的。 ユーザー操作によって対象が切り替わる。 |
Google スプレッドシートにエクスポート
VBAで安定したマクロを作成するための鉄則は、「可能な限りThisWorkbookを基準に考え、ActiveWorkbookの使用は意図的な場合に限定する」ということです。この使い分けをマスターすることが、脱初心者への大きな一歩となります。
副業から独立まで「稼げる」Webスキルを習得する(PR)
ここまで読んでいただきありがとうございます。 最後に宣伝をさせてください。
「副業を始めたいが、何から手をつければいいかわからない」「独学でスキルはついたが、収益化できていない」という悩みを持つ方には、マンツーマン指導のWebスクール**「メイカラ」**が適しています。
このスクールは、単に技術を教えるだけでなく、**「副業として具体的にどう稼ぐか」**という実務直結のノウハウ提供に特化している点が特徴です。
講師陣は、実際に「副業Webライターから1年で独立して月収100万円」を達成したプロや、現役で利益を出し続けているブロガーなど、確かな実績を持つプレイヤーのみで構成されています。そのため、机上の空論ではない、現場で通用する戦術を学ぶことができます。
副業に特化した強み
- 最短ルートの提示: 未経験からでも実績を出せるよう、マンツーマンで指導。
- AI活用の習得: 副業の時間対効果を最大化するための、正しいAI活用スキルも網羅。
- 案件獲得のチャンス: 運営がWebマーケティング会社であるため、実力次第で社内案件の紹介など、仕事に直結する可能性があります。
受講者の多くは、「在宅でできる仕事を探している」「副業を頑張りたい」という20代・30代・40代が中心です。
受講前には、講師による無料説明が行われます。無理な勧誘はなく、自分に合った副業スタイルやプランを相談できるため、まずは話を聞いてみることから始めてみてはいかがでしょうか。
