Excel起動時にマクロを自動実行させる2つの方法

Excel起動時にマクロを自動実行させる2つの方法

当サイトはアフィリエイト広告を利用しています。

Excelマクロの実行方法と言えば、手動で実行ボタンをクリックする方法が一般的ですが、Excelの起動をトリガーとして自動的に実行させる方法もあります。

今回はそんな、Excel起動時にマクロを自動実行させる方法をご紹介します。

自動実行されないときの対処法や、一時的に自動実行せずにファイルを開く方法もあわせてご紹介します。

Excel起動時にマクロを自動実行させる方法

Excel起動時にマクロを自動実行させる方法には、以下のようなものがあります。

  • ThisWorkbookでWorkbook_Openを使う
  • 標準モジュールでAuto_Openを使う

方法1:ThisWorkbookでWorkbook_Openを使う

1つ目は、「ThisWorkbook」というモジュールで、「Workbook_Open」というイベントプロシージャを使う方法です。Workbook_Openは、Excel97以降のバージョンで使用できます。

たとえばBook1.xlsmを起動したときに「こんにちは!」というメッセージを表示するマクロを自動実行させるには、まずBook1.xlsmのVBEを起動して「ThisWorkbook」をダブルクリックします。

VBEのプロジェクトウィンドウ

コードウィンドウが表示されたら、左側のドロップダウンリストから「Workbook」を選択します。すると以下のようなコードが挿入されます。

Private Sub Workbook_Open()
    
End Sub
ThisWorkbookのコードウィンドウ

このPrivate Sub Workbook_Open()End Subの間に、起動時に実行したいマクロのコードを書きます。

Private Sub Workbook_Open()
    
    MsgBox "こんにちは!"
    
End Sub
ThisWorkbookのコードウィンドウ

この状態で上書き保存して閉じると、Book1.xlsmを起動したときに「こんにちは!」というメッセージが表示されます。

マクロが実行された様子

方法2:標準モジュールでAuto_Openを使う

2つ目は、「標準モジュール」で「Auto_Open」というプロシージャを使う方法です。Auto_Openは、Excel95以前の古いバージョンでも使用できます。

たとえばBook1.xlsmを起動したときに「こんにちは!」というメッセージを表示するマクロを自動実行させるには、まずBook1.xlsmのVBEを起動して「挿入」⇒「標準モジュール」をクリックします。

VBEの「挿入」メニュー

するとコードウィンドウが表示されるので、以下のようなコードを書きます。

Private Sub Auto_Open()
    
    MsgBox "こんにちは!"
    
End Sub
標準モジュールのコードウィンドウ

この状態で上書き保存して閉じると、Book1.xlsmを起動したときに「こんにちは!」というメッセージが表示されます。

Excel起動時にマクロが自動実行されないときの対処法

前述の方法でマクロが自動実行されない場合、対処法には以下のようなものがあります。

  • Excelのイベントを抑止するコードを削除する
  • Auto_Openを実行するコードを追加する

対処法1:Excelのイベントを抑止するコードを削除する

たとえば、以下のようなExcelファイルがあったとします。

  • Book1.xlsm:Workbook_Openを使ってメッセージを表示するマクロを記述
  • Book2.xlsm:Book1.xlsmを開くマクロ(「ファイルを開く」マクロ)を記述

このとき、Book2.xlsmで「ファイルを開く」マクロを実行すると、Book1.xlsmは開いても、メッセージは表示されないことがあります。

メッセージが表示されない、つまりWorkbook_Openが機能しないのは、Book2.xlsmにApplication.EnableEvents = Falseという、Excelのイベントを抑止するコードが書かれている場合です。このようなコードが書かれている場合は、対応するApplication.EnableEvents = Trueとともに削除しましょう。

Book2.xlsmのコード

これで別のファイルから開いた場合もメッセージが表示されるようになります。

対処法2:Auto_Openを実行するコードを追加する

たとえば、以下のようなExcelファイルがあったとします。

  • Book1.xlsm:Auto_Openを使ってメッセージを表示するマクロを記述
  • Book2.xlsm:Book1.xlsmを開くマクロ(「ファイルを開く」マクロ)を記述

このとき、Book2.xlsmで「ファイルを開く」マクロを実行すると、Book1.xlsmは開いても、メッセージは表示されません。なぜなら、Auto_Openはマクロで開いた場合に実行されないという特徴があるからです。

Auto_Openをマクロで開いた場合に実行させるには、ファイルを開くコードの下に以下のようなコードを追加します。

ActiveWorkbook.RunAutoMacros xlAutoOpen
Book2.xlsmのコード

これでマクロで開いた場合もメッセージが表示されるようになります。

Excel起動時にマクロを自動実行させない方法

「通常はExcel起動時にマクロを自動実行したいけど、一時的に実行しないでExcelファイルを開きたい」という場合は、[Shift]を押しながらExcelファイルを開きます。

まずExcelを起動します。Windows11の場合は、タスクバーの検索ボックスに「excel」と入力し、表示された「Excel」をクリックします。

Windows11の検索結果

Excelが起動したら、[Ctrl]+[O]を押して「開く」画面へ移動し、「参照」をクリックします。

Excelの「開く」画面

「ファイルを開く」ダイアログボックスが表示されたら、開きたいExcelファイルを選択し、[Shift]を押しながら「開く」ボタンをクリックします。

Excelの「ファイルを開く」ダイアログボックス

これでマクロが実行されずにExcelファイルが開きます。

Excelマクロを有効化する方法

マクロファイルを開くと「セキュリティ警告」「保護ビュー」「セキュリティリスク」などと表示されてしまう場合は、以下のような方法でExcelマクロを有効化しましょう。

  • 「コンテンツの有効化」ボタンをクリックする
  • プロパティでブロックを解除する
  • ファイルの保存場所を信頼できる場所に追加する

詳しくは以下の記事をご覧ください。

まとめ

今回は、Excel起動時にマクロを自動実行させる方法をご紹介しました。

Excel起動時にマクロを自動実行させるには、ThisWorkbookでWorkbook_Openを使うか、標準モジュールでAuto_Openを使います。

どちらの方法もExcel起動時にマクロが実行されることに変わりはないですが、別のファイルから起動した場合にマクロを実行したくない場合、Application.EnableEvents = Falseと書くだけで実現できる簡単さから、前者のThisWorkbookでWorkbook_Openを使う方法がおすすめです。