マクロを実行せずファイルを開く

ヘッダー広告
スポンサードリンク

本日はマクロを実行せずにファイルを開く方法についての記事となります。

VBAマクロを開発していると、起動時にマクロを実行させたいケースが多々あるかと思います。

そして開発したマクロを修正したり、もしくは最近だとマクロファイルに悪意のある処理(※)が含まれていることがあるため中身を事前に調べるために、起動時にマクロを実行せずに一度ファイルを開いてからマクロを確認や修正するということをしたい時に今回ご紹介する方法を使います。

※マクロファイルに含まれる悪意のある処理は、HTTPリクエストする処理がマクロファイルに入っていて、リクエストパラメータに個人情報などが含まれて送信されるなどのロジックが含まれているケースが多いです。今回ご紹介する方法を使用して、うかつに実行しないように気を付けてください。

マクロを実行せずファイルを開く

EXCELファイル起動時にマクロを実行する

マクロを実行せずにファイルを開く方法をお伝えする前に、EXCELファイルを開いた際にマクロを実行する方法についても念のため記載しておきます。
EXCELで実現する方法は2つあります。

まず1つ目は、Workbook_Openプロシージャを作成する方法です。

起動時にマクロを実行させたいファイルの、ThisWorkbookモジュールにWorkbook_Openプロシージャを作成します。
そして作成したWorkbook_Openプロシージャ内に起動した際に処理したい内容を記載すれば、作成完了となります。

作成場所:VBAProject>Microsoft Excel Object>ThisWorkbook

Private Sub Workbook_Open()

    MsgBox "起動時のマクロが実行されました。", vbInformation, "起動時処理(Workbook_Open)"

End Sub

ファイル起動時の実行結果

これが起動時にマクロを実行する1つ目の方法となります。

続いて2つ目の方法は、Auto_Openプロシージャを作成する方法です。

こちらもマクロ実行したいファイルの、標準モジュール内のいずれかのモジュール内にAuto_Openプロシージャを作成します。
Microsoft Excel Objects内のモジュールに配置しても動作しませんのでご注意ください。

作成場所:VBAProject>標準モジュール>任意のモジュール

Private Sub Auto_Open()

    MsgBox "起動時のマクロが実行されました。", vbInformation, "起動時処理(Auto_Open)"

End Sub

ファイル起動時の実行結果

ちなみにAuto_Openプロシージャは、標準モジュール内のどのモジュールに配置しても動作しますし、PublicプロシージャでもPrivateプロシージャでもどちらでも問題ありませんが、複数のAuto_Openプロシージャが存在するとエラーになりますのでご注意ください。

Module2にもAuto_Openプロシージャを作成

実行結果


エラーメッセージ:名前が適切ではありません。Auto_Open

マクロを実行せずファイルを開く

ではマクロを実行せずにファイルを開く方法についてご紹介致します。
使用するマクロは上記でご説明したAuto_Openを利用したものです。

まず普通に起動した場合は、以下のメッセージが出力されます。

このAuto_Openプロシージャを実行させないようにするには、以下の手順を実施します。

1.空白のブックを起動

2.ファイルから開くを選択



3.参照から起動したいファイルを選択

4.Shiftキーを押しながら、開くをクリックする

すると、以下のようにAuto_Openプロシージャが実行されないため、メッセージが出力されないままブックが開かれます。

以上がマクロを実行せずにEXCELファイルを起動する方法になります。
補足になりますが、Accessの場合も同様で、空のAccessファイルから対象のファイルをShiftキーを押しながら開くとマクロが実行されません。

フッター広告

スポンサードリンク



シェアする

  • このエントリーをはてなブックマークに追加

フォローする