【Excel】Workbook_Openが発火しない!Excelのマクロセキュリティ設定との関係

【Excel】Workbook_Openが発火しない!Excelのマクロセキュリティ設定との関係
🛡️ 超解決

Excelでブックを開いたときに自動実行したいマクロがありますか。Workbook_Openイベントは、ブックを開いたときに自動的に実行される便利な機能です。しかし、このWorkbook_Openイベントが想定通りに動作しないことがあります。原因は、Excelのマクロセキュリティ設定が関係している場合が多いです。この記事では、Workbook_Openが発火しない原因を解説し、その解決策を具体的に説明します。

Excelのマクロセキュリティ設定は、悪意のあるマクロからコンピューターを保護するために重要です。しかし、この設定が厳しすぎると、意図したマクロの実行も妨げてしまうことがあります。Workbook_Openイベントが動作しない場合、まずはマクロセキュリティ設定を確認することが第一歩です。この記事を読めば、Workbook_Openイベントが発火しない原因を特定し、適切にマクロを実行できるようになります。

ADVERTISEMENT

Workbook_Openイベントが発火しない主な原因

Workbook_Openイベントが発火しない主な原因は、Excelのマクロセキュリティ設定がマクロの実行をブロックしていることです。具体的には、以下の設定が関係しています。

1. マクロの無効化: Excelのセキュリティセンターで、すべてのマクロが無効になっている場合、Workbook_Openイベントを含むすべてのマクロが実行されません。これは最も一般的な原因です。

2. 信頼できない場所への保存: マクロを含むブックが、信頼できない場所(例:インターネットからダウンロードした場所、一時フォルダなど)に保存されている場合、Excelはセキュリティ上の理由からマクロの実行をブロックします。Workbook_Openイベントも例外ではありません。

3. VBAプロジェクトへのアクセス許可: VBAプロジェクトオブジェクトモデルへのアクセスが許可されていない場合も、Workbook_Openイベントが正しく動作しないことがあります。これは、外部からVBAプロジェクトを操作しようとする場合に影響しますが、Workbook_Openイベントの基本的な実行にも関わることがあります。

4. コードの記述ミス: Workbook_Openイベントプロシージャの名前が間違っている、または標準モジュールではなく、ThisWorkbookモジュールに記述されていない場合も、イベントは発火しません。イベント名は正確に「Workbook_Open」である必要があります。

5. ブックの保存形式: マクロを含むブックは、マクロ有効ブック形式(.xlsm)で保存する必要があります。標準のブック形式(.xlsx)で保存されている場合、マクロは保存されず、Workbook_Openイベントも当然実行されません。

お探しの解決策が見つからない場合は、こちらの「Excelトラブル完全解決データベース」で他のエラー原因や解決策をチェックしてみてください。

Workbook_Openイベントを発火させるための設定手順

Workbook_Openイベントを発火させるためには、Excelのマクロセキュリティ設定を適切に行う必要があります。以下の手順で設定を確認・変更してください。

  1. Excelのセキュリティセンターを開く
    Excelを開き、「ファイル」タブをクリックします。次に、「オプション」を選択し、表示される「Excelのオプション」ダイアログボックスで「トラストセンター」をクリックします。「トラストセンターの設定」ボタンをクリックします。
  2. マクロの設定を変更する
    トラストセンターの設定画面で、「マクロの設定」を選択します。ここで、以下のいずれかのオプションを選択します。
    ・すべてのマクロを無効にする(通知あり): これを選択すると、マクロを含むブックを開いたときに警告が表示され、ユーザーがマクロを有効にするかどうかを選択できます。Workbook_Openイベントを動作させたい場合は、この警告が表示された際に「コンテンツの有効化」をクリックする必要があります。
    ・すべてのマクロを無効にする(通知なし): この設定では、すべてのマクロが自動的に無効化され、ユーザーに通知されません。Workbook_Openイベントは発火しません。
    ・VBAプロジェクトオブジェクトモデルへのアクセスを信頼する: このオプションは、VBAコードから他のVBAプロジェクトにアクセスする場合に必要ですが、Workbook_Openイベントの基本的な実行には直接関係しません。ただし、関連する設定として確認しておくと良いでしょう。
    ・すべてのマクロを有効にする: この設定は最も危険であり、セキュリティリスクを高めます。推奨されません。
  3. 信頼できる場所の設定を確認・追加する
    トラストセンターの設定画面で、「信頼できる場所」を選択します。ここに、マクロを含むブックを保存しているフォルダを追加することで、そのフォルダ内のブックのマクロ実行が許可されます。通常、マクロを記述したブックは、特定のフォルダにまとめて保存し、そのフォルダを信頼できる場所として登録するのが安全です。
    「新しい場所の追加」をクリックし、「参照」ボタンからマクロブックを保存しているフォルダを選択して追加します。
  4. ブックの保存形式を確認する
    マクロを含むブックは、「ファイル」タブから「名前を付けて保存」を選択し、ファイルの種類を「Excelマクロ有効ブック (*.xlsm)」として保存する必要があります。標準の「Excel ブック (*.xlsx)」で保存されている場合、マクロは保存されません。
  5. Workbook_Openイベントコードの確認
    VBAエディタ(Alt + F11キーで開く)を開き、VBAプロジェクトウィンドウで対象のブックを選択します。その中の「ThisWorkbook」オブジェクトをダブルクリックし、コードウィンドウに「Private Sub Workbook_Open()」と「End Sub」で囲まれたコードが正しく記述されているか確認します。コードが記述されていない、あるいはスペルミスがある場合は修正してください。

Workbook_Openが発火しない場合の追加トラブルシューティング

上記の設定を行ってもWorkbook_Openイベントが発火しない場合、さらに以下の点を確認してください。

マクロの通知バーが表示されない

「すべてのマクロを無効にする(通知あり)」を選択しているにも関わらず、ブックを開いたときにマクロの通知バーが表示されないことがあります。この場合、以下の原因が考えられます。

・ブックが「信頼できない場所」に保存されている: Excelは、インターネット一時ファイルフォルダや、ネットワーク上の特定の場所など、デフォルトで信頼できないと判断される場所に保存されたブックのマクロ実行をブロックします。この場合、通知バーは表示されず、マクロは実行されません。ブックをデスクトップや「ドキュメント」フォルダなど、信頼できる場所に移動して再度開いてみてください。それでも解決しない場合は、前述の「信頼できる場所」にそのフォルダを追加してください。

・「VBAプロジェクトオブジェクトモデルへのアクセスを信頼する」設定がオフになっている: この設定がオフになっていると、一部のVBAコード(特に外部からVBAプロジェクトにアクセスしようとするもの)が正しく実行されないことがあります。Workbook_Openイベント自体は通常この設定に依存しませんが、関連するマクロや、ブックを開いたときに実行される他のイベントに影響を与える可能性があります。トラストセンターの設定で、「マクロの設定」内にある「VBAプロジェクトオブジェクトモデルへのアクセスを信頼する」にチェックを入れてみてください。

マクロ有効ブック(.xlsm)で保存しても改善しない

ファイル形式を.xlsmで保存しているにも関わらずWorkbook_Openイベントが発火しない場合、VBAコード自体に問題がある可能性があります。

・ThisWorkbookモジュールに記述されていない: Workbook_Openイベントは、必ずそのマクロが含まれるブックの「ThisWorkbook」モジュールに記述する必要があります。標準モジュールやシートモジュールに記述しても、イベントは発火しません。VBAエディタで、プロジェクトウィンドウから「ThisWorkbook」オブジェクトをダブルクリックして、コードがそこに記述されているか確認してください。

・プロシージャ名が間違っている: イベントプロシージャの名前は「Workbook_Open」でなければなりません。大文字・小文字は区別されませんが、スペルミスがあると認識されません。「Private Sub Workbook_Open()」となっているか、再度確認してください。

・他のイベントプロシージャとの競合: 稀に、他のイベントプロシージャ(例:Workbook_BeforeSave)がWorkbook_Openイベントの実行を妨げている可能性があります。VBAエディタで他のイベントプロシージャがないか確認し、Workbook_Openイベントの実行を一時的に妨げている可能性のあるコードをコメントアウトするなどして、原因を特定してください。

Excelのバージョンによる違い

Excelのバージョンによって、マクロセキュリティ設定の表示や場所が若干異なる場合があります。しかし、基本的な考え方(マクロの無効化、信頼できる場所の設定)は共通しています。

・Excel 2010/2013/2016/2019: 基本的な操作はMicrosoft 365版とほぼ同じです。「ファイル」>「オプション」>「トラストセンター」>「トラストセンターの設定」から設定します。

・Excel 2007: 「Officeボタン」>「Excelのオプション」>「トラストセンター」>「トラストセンターの設定」から設定します。

どのバージョンでも、マクロの実行を許可するには、セキュリティ設定の緩和または信頼できる場所へのブックの保存が必要です。特に、古いバージョンではセキュリティ設定がデフォルトで厳しくなっている傾向があります。

機能/設定項目 Workbook_Openイベントの動作 注意点
マクロ無効化(通知あり) コンテンツ有効化で動作 ユーザーの操作が必要
マクロ無効化(通知なし) 動作しない 常にブロックされる
信頼できる場所への保存 自動的に動作(通知なし) フォルダの管理が必要
VBAプロジェクトへのアクセス許可 直接影響しないが、関連コードに影響 セキュリティリスクを考慮
マクロ有効ブック(.xlsm)形式 必須 .xlsxではマクロが保存されない
ThisWorkbookモジュールへの記述 必須 標準モジュールでは動作しない

ADVERTISEMENT

まとめ

Workbook_Openイベントが発火しない問題は、Excelのマクロセキュリティ設定やブックの保存場所、VBAコードの記述方法など、複数の要因によって引き起こされます。この記事では、これらの原因を特定し、解決するための具体的な設定手順とトラブルシューティング方法を解説しました。

今回解説したマクロセキュリティ設定の確認と、「信頼できる場所」へのブックの登録、そして「ThisWorkbook」モジュールへの正確なコード記述を行うことで、Workbook_Openイベントを意図通りに動作させることができます。これにより、ブックを開いたときに自動で実行したい処理を確実に実行できるようになります。

今後は、ブックを共有する相手の環境も考慮し、マクロの有効化に関する注意喚起を添えるなどの配慮も行うと良いでしょう。また、より複雑な自動化を実現するために、他のExcelイベント(Workbook_BeforeSaveなど)や、Power Queryなどの機能との連携も検討してみてください。

📊
Excelトラブル完全解決データベースこの記事以外にも、様々なエラー解決策をまとめています。困った時の逆引きに活用してください。

ADVERTISEMENT

この記事の監修者
📈

超解決 Excel・Word研究班

企業のDX支援や業務効率化を専門とする技術者チーム。20年以上のExcel・Word運用改善実績に基づき、不具合の根本原因と最短の解決策を監修しています。ExcelとWordを使った「やりたいこと」「困っていること」「より便利な使い方」をクライアントの視点で丁寧に提供します。

🏆
超解決 Excel検定 あなたのExcel実務能力を3分で測定!【1級・2級・3級】