カテゴリ: Excel VBA 更新日: 2026/01/13

Excel VBAのプロジェクト構成とモジュール管理!標準・シート・ThisWorkbookの違い

標準モジュール・シートモジュール・ThisWorkbookの違いと使い分けを徹底解説
標準モジュール・シートモジュール・ThisWorkbookの違いと使い分けを徹底解説

先生と生徒の会話形式で理解しよう

生徒

「VBAの画面を開くと、『Module1』とか『Sheet1』とかいろいろな場所がありますよね。どこにコードを書けばいいのか迷ってしまいます…。」

先生

「それはとても大切な疑問ですね!Excel VBAには、プログラムを書くための『部屋』がいくつか用意されていて、それぞれ役割が違うんですよ。」

生徒

「部屋によって使い分けが必要なんですね。初心者はまずどこから覚えればいいですか?」

先生

「基本は『標準モジュール』ですが、他の場所も知っておくと自動化の幅が広がります。今日はその違いを詳しく解説しますね!」

1. VBAのプロジェクト構成とは?

1. VBAのプロジェクト構成とは?
1. VBAのプロジェクト構成とは?

Excel VBAの世界では、1つのExcelファイル(ブック)全体を「プロジェクト」と呼びます。そして、そのプロジェクトの中には、プログラムを書き込むための「モジュール」という小さな部屋がいくつも存在します。

パソコンを初めて触る方にとって、プログラミングは「どこか1つの場所にひたすら命令を書くもの」というイメージがあるかもしれません。しかし、Excel VBAは「Excelというソフト」と密接に関係しているため、「どこに書くか」によって、そのプログラムがいつ、どのように動くのかが変わってくるのです。

主な部屋の種類は、大きく分けて以下の3つです。

  • 標準モジュール:何でもこなせる汎用的な部屋
  • シートモジュール:特定のシート専用の部屋
  • ThisWorkbookモジュール:ファイル全体(ブック)を見守る部屋

これらを正しく使い分けることが、脱・初心者への第一歩となります。

2. 最もよく使う「標準モジュール」の役割

2. 最もよく使う「標準モジュール」の役割
2. 最もよく使う「標準モジュール」の役割

VBAを勉強し始めて、一番最初にお世話になるのがこの「標準モジュール」です。ここは、特定のシートやブックの動きに縛られない、自由なプログラムを置くための場所です。例えるなら、家の外にある「物置」や、誰でも使える「共有スペース」のようなものです。

標準モジュールに書いたプログラム(マクロ)は、基本的にどのシートからでも呼び出すことができ、Excelの「マクロ実行」画面にも表示されます。「ボタンを押したらこの作業をしてほしい!」というような一般的な自動化ツールを作る場合は、まずここを使うのが正解です。

標準モジュールを追加するには、VBE(VBAの編集画面)の上部メニューから「挿入」→「標準モジュール」をクリックします。すると「Module1」という名前のシートが表示されます。


Sub HelloWorld()
    ' 標準モジュールに書く最も基本的なプログラム
    MsgBox "こんにちは!これは標準モジュールから動いています。"
End Sub

このように、単純なメッセージを表示するような汎用的な処理は、標準モジュールに書くのが一般的です。

3. 特定のシートを見守る「シートモジュール」

3. 特定のシートを見守る「シートモジュール」
3. 特定のシートを見守る「シートモジュール」

次に紹介するのは「シートモジュール」です。これは、Excelの各シート(Sheet1、Sheet2など)と1対1で結びついている特別な部屋です。標準モジュールが「共有スペース」なら、シートモジュールは「個人の部屋」のようなイメージです。

シートモジュールの最大の特徴は、そのシートで起きた「出来事(イベント)」をきっかけにプログラムを動かせることです。例えば、「Sheet1のA1セルが書き換えられたら、自動で文字の色を赤くする」といった処理を作りたい場合に活躍します。

逆に言えば、Sheet1のモジュールに書いたプログラムは、基本的にはSheet1のことだけを考えて作られます。他のシートには干渉しない、専用のルールを作りたいときに便利です。


' これは Sheet1 のモジュールに記述する例です
Sub PrivateTask()
    ' このシートだけで有効な処理をイメージ
    Range("A1").Value = "このシート専用のメッセージです"
End Sub

4. ファイル全体を管理する「ThisWorkbook」

4. ファイル全体を管理する「ThisWorkbook」
4. ファイル全体を管理する「ThisWorkbook」

ThisWorkbook」は、そのExcelファイル(ブック)そのものを指す特別なモジュールです。プロジェクト内に1つだけ存在し、ファイルが開かれたときや閉じられたときなど、ブック全体に関わる出来事をキャッチします。

例えば、「このファイルを開いた瞬間に、挨拶のメッセージを表示したい」とか「ファイルを保存する直前に、特定のセルの入力漏れをチェックしたい」といった、ファイル単位の管理を行いたい場合に使用します。

いわば、建物全体を管理する「管理人室」のような役割ですね。個別のシートの動きではなく、ファイルがどう扱われるかをコントロールするために使われます。


' ThisWorkbook モジュールに記述する例
' ファイルが開いた時に自動で実行される
Private Sub Workbook_Open()
    MsgBox "このファイルが開かれました。今日も作業を頑張りましょう!"
End Sub

5. オブジェクトとモジュールの関係性

5. オブジェクトとモジュールの関係性
5. オブジェクトとモジュールの関係性

ここで少し難しい言葉ですが、「オブジェクト」という考え方に触れておきましょう。Excelにおけるオブジェクトとは、「操作の対象となるもの」のことです。ブック、シート、セル、グラフ、これらすべてがオブジェクトです。

VBAのプロジェクト構成を見ると、「Microsoft Excel Objects」というフォルダの中にシート名やThisWorkbookが入っていますよね。これは、これらがExcelの部品(オブジェクト)に直接くっついているモジュールだからです。

一方で「標準モジュール」は、特定のオブジェクトに属していません。そのため、特定のモノに依存しない「計算処理」や「共通の定型作業」をまとめるのに適しています。初心者の方は、「特定のモノに紐付くならシートやブックのモジュール、そうでないなら標準モジュール」と覚えておけば間違いありません。

6. 迷ったときの使い分けルール

6. 迷ったときの使い分けルール
6. 迷ったときの使い分けルール

「結局、どこに何を書けばいいの?」と迷ってしまったら、以下の優先順位で考えてみてください。

  1. まずは「標準モジュール」を検討する:ボタンをクリックして動かすマクロや、自分で作成するほとんどのプログラムはここでOKです。
  2. 「イベント」を使いたいなら「シート」か「ThisWorkbook」:「セルを選んだら」「シートを切り替えたら」といった、操作に連動させたいときだけこちらを使います。
  3. 設定を共通化したいなら「標準モジュール」:複数の場所で使い回す便利な機能は、1箇所(標準モジュール)にまとめておくと、後で修正するのが楽になります。

最初から完璧に使い分けようとしなくても大丈夫です。まずは標準モジュールで自由にコードを書く練習をして、慣れてきたら「自動で動かしたいからシートモジュールを使ってみよう」と挑戦の幅を広げていきましょう。

7. プロジェクトを整理するメリット

7. プロジェクトを整理するメリット
7. プロジェクトを整理するメリット

なぜこのように部屋が分かれているのでしょうか?それは、プログラムが大きくなったときに「どこに何があるか」を分かりやすくするためです。

もし、1つの大きな部屋にすべての道具が散らかっていたら、探し物をするのが大変ですよね。VBAも同じです。共通の道具は「標準モジュール」、特定の部屋専用の道具は「シートモジュール」と整理整頓しておくことで、数ヶ月後の自分や他の人がプログラムを見たときに、スムーズに内容を理解できるようになります。

また、整理されたプロジェクトはエラー(不具合)が起きたときの原因究明も早くなります。これも立派なプログラミングスキルの1つです。パソコンのフォルダを整理するように、VBAのプロジェクトもきれいに保つ工夫をしてみましょう。

8. 実際に記述する際のポイント

8. 実際に記述する際のポイント
8. 実際に記述する際のポイント

最後に、実際にコードを書き込む際の注意点です。VBEの左側にある「プロジェクトエクスプローラー」という窓から、書き込みたい場所をダブルクリックして開きます。このとき、画面の上部に「(General)」や「Workbook」と表示されていることを確認してください。

特にシートモジュールやThisWorkbookでは、右側のプルダウンメニューから「Open」や「Change」などの動作を選択するだけで、プログラムの枠組みを自動で作ってくれる機能があります。これを利用すると、スペルミスを防げるので初心者には非常におすすめです。


【実行結果のイメージ】
標準モジュールの場合:マクロ一覧に名前が出て、いつでも実行可能。
シートモジュールの場合:そのシートで特定の操作をすると勝手に動く。
ThisWorkbookの場合:ファイルを開くだけで勝手にメッセージが出る。

このように、書く場所を変えるだけでExcelの挙動を劇的に変えることができるのが、VBAの面白いところですね。最初は混乱するかもしれませんが、何度も触るうちに「これはあそこの部屋だな」と直感的にわかるようになりますよ。

カテゴリの一覧へ
新着記事
New1
Office Scripts
Office Scriptsの基本!Excel自動化で使う関数とコードの書き方
New2
Office Scripts
Office Scriptsの基本!Excel自動化で使う関数とコードの書き方
New3
Excel VBA
VBAクラスモジュールとは?メリットと基本的な使い方を初心者向けに解説
New4
Office Scripts
Office Scriptsの基本!Excel自動化で使う関数とコードの書き方
人気記事
No.1
Java&Spring記事人気No1
Office Scripts
Office Scriptsの基本!Excel自動化で使う関数とコードの書き方
No.2
Java&Spring記事人気No2
Excel VBA
VBAクラスモジュールとは?メリットと基本的な使い方を初心者向けに解説
No.3
Java&Spring記事人気No3
Excel VBA
Excel VBAのプロジェクト構成とモジュール管理!標準・シート・ThisWorkbookの違い
No.4
Java&Spring記事人気No4
Office Scripts
Office Scriptsの基本!Excel自動化で使うインターフェイスとスクリプト設計の考え方
No.5
Java&Spring記事人気No5
Office Scripts
Office Scriptsの基本!Excel自動化で使う関数とコードの書き方
No.6
Java&Spring記事人気No6
Office Scripts
Office Scriptsの基本!Excel自動化で学ぶエラーを防ぐ型チェックの活用方法
No.7
Java&Spring記事人気No7
Office Scripts
Office Scriptsの基本!Excel自動化で使う関数とコードの書き方
No.8
Java&Spring記事人気No8
Office Scripts
Office Scriptsの基本!Excel自動化で理解するExcel Script API特有の型