なぜ「マクロが無効にされました。」と無効化される?
今回の目標
- 「マクロが無効にされました。」が表示される理由を知る
- 「コンテンツの有効化」を選択する際の危険性を理解する
説明
セキュリティの警告 マクロが無効にされました。
皆さんマクロを保存されたエクセルファイルを開いたときに次の画像の警告が表示されたことはありませんか。
今回はなぜマクロが無効化されてしまうのかを説明します。
理由はウィルスが潜んでいる場合があるから
ExcelVBAを悪用すると、下記のようにウィルスと同様のことができてしまいます。
- (デスクトップなどの)ファイルやフォルダを削除
- PCを直ちに強制シャットダウン
- PC起動直後に再起動
- データやファイルをメール等で勝手に送信
- InternetExplorを起動して、ウィルスに感染するサイトに自動接続
このように危険なことも実行可能です。ExcelVBA上級者なら、上記のいずれも1時間もあれば余裕で作成可能です。。。
対策方法
かといって、Webにはとても有用なマクロがアップロードされていて、使用しないのはもったいないです。特に気を付けなければならないプログラムを説明します。
- ブックオブジェクトのプログラムを確認する
オープンブックやアクティブブック変更時のイベントにプログラムの記載があるか確認してください。 「Workbook_Open」のプロシージャは『エクセルファイルを開いたときに自動的に実行する』機能です。マクロが無効にされている場合は、「コンテンツの有効化」ボタンをクリックした瞬間にマクロが実行されます。自分で何が書かれているか分からない場合はマクロを有効にするべきではないでしょう。 - シートオブジェクトのプログラムを確認する
アクティブシート変更時のイベントにプログラムの記載があったら危険です。
マクロの有効化
デフォルトでマクロを有効にする方法もありますが、危険な行為です、そのため、あえて本サイトでは記述はしません。
-
ブックオブジェクトのプログラムを確認する。
ブックオブジェクトを確認してください。下図の緑枠をダブルクリックするとブックのプログラムが表示されます。
要注意!
プロジェクトウィンドウ「ThisWorkbook」に「Workbook_Open」があったら特に注意深く確認する必要があります。
これは前述したとおり、「コンテンツの有効化」ボタンをクリックした瞬間にマクロが実行される機能です。
標準モジュールのプロシージャを呼び出していたら、併せてそのプログラムも確認するようにします。
- シートオブジェクトのプログラムを確認する
シートオブジェクトを確認してください。下図の緑枠をダブルクリックするとシートのプログラムが表示されます。
- 標準モジュールを確認する
ボタン等から呼び出されるマクロにも注意が必要です。
悪意のあるプログラムの可能性があります。また、本来の仕様と異なる動作をしてPCに被害を与える可能性もあります。
結論
マクロが無効化されるのは、ウィルスや悪意のあるプログラムを回避するため。
サイトからダウンロードしたエクセルファイルのマクロを実行する前は、使用者自身で確認しよう!