Excelで作成したマクロの内容を確認したいものの、VBAコードがどこに保存されているのか分からず、編集画面を開けないことがあります。

マクロの記録を使ったファイル、他の人から引き継いだブック、拡張子がxlsmの集計ファイルなどでは、VBAコード一覧を表示して処理内容を確認する場面も少なくありません。

この記事では、ExcelのVBAコード一覧を確認し、標準モジュールやシートモジュールを見分けながら安全に表示・編集する方法を解説します。

VBAコード一覧の確認では、AltキーとF11キーでVBEを開き、プロジェクトエクスプローラーから対象モジュールを選ぶ流れが基本です。

コードを編集する前には、元ファイルのコピーを保存し、どのプロシージャがどのシートやボタンに関係しているかを確認しましょう。

VBAコードはExcelのセル上ではなく、Visual Basic Editorという専用画面に保存されています。

マクロを使うブックでは、コードの一覧性と保存形式を理解しておくと、修正や引き継ぎの負担を抑えられます。

 

エクセルでVBAコード一覧を表示する方法

それではまず、VBAコード一覧を表示する基本操作について解説していきます。

ブックの状態 確認する場所 主な内容
マクロ有効ブック 標準モジュール 一般的なマクロ処理
入力シートあり Sheetモジュール セル変更時の自動処理
ブック全体の処理 ThisWorkbook 開く時・閉じる時の処理

 

AltキーとF11キーによるVBE起動

まずはAltキーを押したままF11キーを押し、Visual Basic Editorを開きましょう。

Visual Basic EditorはVBEとも呼ばれ、Excelブックに含まれるVBAのモジュール、プロシージャ、イベントコードを確認するための画面です。

Excelの画面からVBEへ切り替わっても、元のブックが閉じたわけではありません。

画面上部のタイトルバーにMicrosoft Visual Basic for Applicationsと表示されれば、正しく開けています。

エクセルでVBAコード一覧を表示する方法 - AltキーとF11キーによるVBE起動

AltキーとF11キーは、リボンの設定に左右されずにVBA編集画面へ移動できる便利なショートカットです。

ノートパソコンではFnキーを同時に押す必要がある機種もあるため、反応しない場合はキーボードのファンクションキー設定も確認してください。

 

プロジェクトエクスプローラーによるコード確認

続いては、左側のプロジェクトエクスプローラーからVBAコードを探す方法を確認していきます。

VBEが開いたら、左側に表示されるVBAProjectという名前のツリーを確認します。

対象のファイル名が付いたVBAProjectを展開すると、Microsoft Excel Objects、標準モジュール、クラスモジュールなどのフォルダーが表示されます。

エクセルでVBAコード一覧を表示する方法 - プロジェクトエクスプローラーによるコード確認

標準モジュール内のModule1などをダブルクリックすると、右側のコードウィンドウにマクロコードが表示されます。

表示されるモジュール名は作成者が変更していることもあり、売上集計、印刷処理、データ取込のような用途名になっている場合もあります。

一覧の中でモジュールを順番に開くことで、ブックに保存されているVBAの全体像を把握できます。

 

表示メニューとショートカットによる画面復元

プロジェクトエクスプローラーが見当たらない場合は、VBE上部の表示タブからプロジェクトエクスプローラーを選択します。

CtrlキーとRキーでも、左側の一覧パネルを表示できます。

コードウィンドウが閉じているときは、対象モジュールをダブルクリックするか、表示メニューからコードを選択してください。

また、オブジェクトの表示を選ぶと、シートやフォームの画面設計を確認できる場合があります。

コード一覧を確認するだけなら、プロジェクトエクスプローラーとコードウィンドウが見えていれば十分です。

【操作のポイント】VBEを開いた直後は、対象ブックのVBAProject名とファイル名が一致しているか確認します。複数のExcelファイルを開いていると、別ブックのコードを見てしまうことがあるためです。

 

標準モジュールとシートモジュールの確認

続いては、VBAコードが保存される場所ごとの役割を確認していきます。

保存場所 コードの例 実行のきっかけ
標準モジュール Sub 売上集計() 手動実行・ボタン
Sheet1 Worksheet_Change セルの変更
ThisWorkbook Workbook_Open ブックを開く時

 

標準モジュール内のマクロコード

標準モジュールは、利用者が手動で実行する一般的なマクロを置く場所です。

Subから始まりEnd Subで終わるまとまりが、ひとつのプロシージャです。

たとえば、データを整形する処理、PDFを出力する処理、集計表を作成する処理などは、標準モジュールに保存されることが多いでしょう。

Module1、Module2という名前だけでは内容が分かりにくいため、コード先頭のSub名を見て目的を判断します。

標準モジュールとシートモジュールの確認 - 標準モジュール内のマクロコード

マクロ一覧として最初に確認したい場所は、通常は標準モジュールです。

Excelの開発タブにあるマクロ一覧から表示される処理も、主にここにあるPublic Subです。

 

ワークシートモジュール内のイベントコード

Microsoft Excel Objectsフォルダーを開くと、Sheet1やSheet2のようなシートモジュールが表示されます。

ここには、セルの値を変更した時、シートを選択した時、シートを再計算した時などに自動実行されるイベントプロシージャが保存されます。

たとえば入力欄に日付を入れたら担当者名を表示する仕組みは、Worksheet_Changeイベントで作られていることがあります。

通常のマクロ一覧には現れないコードもあるため、意図しない自動処理を調べる時にはシートモジュールの確認が欠かせません。

標準モジュールとシートモジュールの確認 - ワークシートモジュール内のイベントコード

シート名の見た目とVBE上のコードネームは異なる場合があるため、表示名だけで判断しないことが重要です。

 

ThisWorkbook内のブックイベント

ThisWorkbookは、特定のシートではなくExcelファイル全体に関するコードを保存する場所です。

Workbook_Openはブックを開いた時、Workbook_BeforeCloseは閉じる直前、Workbook_BeforeSaveは保存前に実行されます。

ファイルを開いた瞬間にメッセージが出る、特定のシートへ移動する、更新確認が表示されるといった動きは、ThisWorkbookに記述されている可能性があります。

業務用ブックを編集する際は、ブックイベントを不用意に削除すると起動時の初期化が動かなくなるかもしれません。

【操作のポイント】標準モジュール、各Sheet、ThisWorkbookを順に確認し、どのタイミングでコードが動くかを書き留めておくと、修正後の動作確認がしやすくなります。

 

VBEによるコード表示と編集画面

続いては、VBE上でコードを表示し、編集前に確認したい画面構成を解説していきます。

列A 列B 列C
商品名 数量 金額
りんご 3 450
VBAProject – Book1.xlsm – Microsoft Visual Basic for Applications ― □ ×
ファイル 編集 表示 挿入 書式 デバッグ 実行 ツール アドイン ウィンドウ ヘルプ
保存 ▶ 実行 ■ リセット  表示 プロジェクト エクスプローラー ➤
プロジェクト – VBAProject
▼ VBAProject (Book1.xlsm)
▼ Microsoft Excel Objects
Sheet1 (売上データ)
ThisWorkbook
▼ 標準モジュール
Module1
(全般)  (宣言)
1 Sub 売上集計()
2  Range(“D2”).Value = Range(“B2”).Value * Range(“C2”).Value
3 End Sub
吹き出し 赤枠のModule1を選ぶと、右側にVBAコードが表示されます。

 

コードウィンドウのプロシージャ選択

コードウィンドウの上部には、左側にオブジェクト、右側にプロシージャを選ぶドロップダウンがあります。

標準モジュールでは左側が全般となり、右側から目的のSubやFunctionを選択できます。

長いコードではスクロールだけで目的の処理を探すより、プロシージャ一覧を使うほうが効率的です。

プロシージャ名を選択すると、該当するSubまたはFunctionの先頭へ直接移動できます。

イベントコードの場合は、左側でWorksheetやWorkbookを選び、右側の一覧からChangeやOpenなどを選びます。

 

行番号と検索による処理箇所の特定

VBEのツールメニューからオプションを開くと、エディターの設定で行番号を表示できます。

エラー画面でコード行が示された時や、複数人で修正箇所を共有する時には、行番号があると確認が容易です。

CtrlキーとFキーで検索画面を開けば、Range、Cells、Worksheets、特定のシート名、メッセージ文などを検索できます。

たとえば保存処理を探したいならSaveAs、印刷処理を探したいならPrintOutで検索する方法があります。

検索語の例として、セル操作ならRange、繰り返し処理ならFor、条件分岐ならIf、外部ファイル操作ならWorkbooksやOpenを入力します。

コードを読む時は、処理名だけでなく、どのセル範囲やシート名を指定しているかを一緒に確認しましょう。

 

編集前のバックアップとコンパイル確認

VBAを編集する前には、対象のxlsmファイルをコピーし、復元用のバックアップを作成してください。

コードを数文字変更しただけでも、イベント処理や参照先の設定によってはブック全体の動作に影響します。

編集後はVBEのデバッグメニューからVBAProjectのコンパイルを実行し、構文エラーがないか確認します。

コンパイルでエラーが出た場合は、問題のある行が強調表示されるため、スペル、引用符、括弧、End IfやNextの対応を見直しましょう。

【操作のポイント】編集作業はコピーした検証用ファイルで行い、コンパイルと実データでの動作確認を終えてから本番ファイルへ反映するのが安全です。

 

マクロ一覧と実行できるコードの判定

続いては、Excelのマクロ一覧に表示されるコードと、表示されないコードの違いを確認していきます。

コードの種類 マクロ一覧への表示
Public Sub 引数なし 表示されやすい
Private Sub 通常は表示されない
Function 直接実行用ではない場合が多い

 

開発タブのマクロ一覧

Excel側でAltキーとF8キーを押すと、マクロダイアログが開きます。

ここには、基本的に標準モジュール内にあり、引数を持たないPublic Subのマクロが一覧表示されます。

表示名とVBE内のプロシージャ名を照合すると、どのコードが利用者向けに実行されるのかを把握できます。

マクロ一覧に出ないからといって、不要なコードとは限りません。

シートイベントや補助用のFunctionは、別のプロシージャから呼び出される重要な処理である場合があります。

 

PublicとPrivateの宣言

Public Subは他のモジュールやExcelのマクロ画面から呼び出せる公開されたプロシージャです。

一方でPrivate Subは、そのモジュール内やイベント用として利用され、通常はマクロ一覧から実行できません。

上の例では、1行目をヘッダーとした表で、B列の数量とC列の単価を掛け合わせ、D2セルに金額を入れます。

金額の計算式は、数量 × 単価です。

D2 = B2 × C2

実際の運用ではD2の数式またはVBA処理を下方向へオートフィルし、3行目以降の商品にも同じ計算を適用します。

 

ボタンや図形に登録されたマクロ

ワークシート上のボタン、図形、画像にマクロが登録されている場合もあります。

対象の図形を右クリックしてマクロの登録を選ぶと、割り当てられているプロシージャ名を確認できます。

ボタンを押すと何かが実行されるのにコードの場所が分からない時は、登録マクロ名を確認してからVBEで検索するとよいでしょう。

図形に割り当てられたマクロは、削除や名前変更によって実行できなくなることがあります。

【操作のポイント】マクロ一覧、標準モジュール、図形への登録内容を照合すると、手動操作とVBAコードのつながりを正確に確認できます。

 

VBAコード編集時の注意点と保存形式

続いては、VBAコードを編集する時の注意点と、マクロを失わない保存方法を確認していきます。

拡張子 VBA保存 用途
xlsx 不可 通常のExcelブック
xlsm 可能 マクロ有効ブック
xlsb 可能 バイナリ形式

 

xlsm形式での保存

VBAを含むブックは、原則としてExcelマクロ有効ブックであるxlsm形式で保存します。

誤ってxlsx形式で保存しようとすると、VBAプロジェクトを削除する旨の警告が表示されます。

この警告でそのまま保存すると、シートのデータは残ってもVBAコードは失われます。

マクロコードを残したい場合は、名前を付けて保存でxlsmを選択することが必須です。

保存前にファイル名の末尾を確認し、xlsxではなくxlsmになっているかを確かめます。共有用にマクロ不要版を作る場合だけ、別名でxlsxを作成するとよいでしょう。

 

変数宣言とOption Explicit

コードの先頭にOption Explicitを記述すると、宣言していない変数を使用した時にエラーとして検出できます。

たとえば売上額という変数名を途中で売上額gと打ち間違えても、宣言を必須にする設定なら早い段階で気付けます。

VBEのオプションで変数の宣言を強制する設定を有効にしておくと、新規モジュールにOption Explicitが自動挿入されます。

小さな入力ミスによる誤計算を防ぐためにも、変数宣言は省略しない習慣が大切です。

 

信頼できるファイルのみを編集する判断

外部から受け取ったxlsmファイルには、意図しない処理が埋め込まれている可能性があります。

VBAコード一覧を確認する目的が調査である場合でも、内容が不明なコードを安易に実行しないでください。

特にShell、CreateObject、Kill、PowerShell、URLの取得などの記述がある時は、処理内容を十分に確認する必要があります。

社内ファイルであっても、作成者、更新履歴、用途を確認してから変更するほうが安心です。

【操作のポイント】VBAの編集後はxlsmで保存し、実行前にコードの対象シート、セル範囲、外部ファイル操作の有無を確認します。

 

まとめ VBAコード一覧を確認するエクセルの方法

ExcelのVBAコード一覧を確認するには、AltキーとF11キーでVisual Basic Editorを開き、プロジェクトエクスプローラーから対象ブックのモジュールを選択します。

一般的なマクロは標準モジュールにあり、セル変更時の自動処理はシートモジュール、ブックを開く時などの処理はThisWorkbookに保存されます。

AltキーとF8キーのマクロ一覧に表示される処理だけでなく、イベントコードも確認することが全体把握のポイントです。

編集する前には必ずバックアップを作成し、VBEでコンパイルを行って構文エラーを確認しましょう。

また、VBAを保持するにはxlsm形式で保存する必要があります。

コードの保存場所と実行のきっかけを整理しながら確認すれば、引き継いだマクロ付きブックでも安全に内容を読み取り、必要な修正へ進めます。

ABOUT ME
white-circle7338
私自身が今まで経験・勉強してきた「エクセル」「ビジネス用語」「生き方」などの情報を、なるべくわかりやすく、楽しく、発信していきます。 一緒に人生を楽しんでいきましょう