マクロウイルスは、アプリケーションのマクロ機能を利用して作られたコンピュータウイルスの一種。特にExcelのマクロウイルスは数が多く、日本でも感染の例が後を絶たない。

 マクロウイルスに侵されないためには、有害なマクロが登録されているブックを開かないことだ。ところが、Excelのマクロは開いてみないと内容がわからない。このジレンマを少しでも解消しようとしてExcel 97に搭載されたのが、「開こうとしているブックには、マクロが…」という警告のメッセージだ。

図1 マクロの警告メッセージ

 ところが、マクロがないはずのブックを開くとき、まれにこのメッセージが表示されることがある。もちろん、マクロウイルスに感染しているわけではない。それはなぜだろう。

 まず、ブックに登録されているマクロとは何かを正しく認識しよう。マクロはSub ○○()からEnd Subという決まり文句で囲って記述する。

図2 マクロの枠組み

 実際に動作するマクロの本文が何も書かれていなくても、マクロの枠組みとなるこの決まり文句が書かれているだけで、Excel 97は「マクロが存在する」と判断してしまう。マクロの有無を調べるのに「ツール」→「マクロ」で表示される「マクロ」ダイアログボックスを見るだけでは足りない。VBEを開いてマクロの枠組みが記述されていないかどうかを調べなければならない。市販のウイルス除去ツールの中には、マクロウイルスを除去するするとき、ウイルスの本体であるマクロのコードを残して、この枠組みを残すものもある。

 また、Excel 97には、ワークシート上に「日付」という範囲名を付けると、そのブックにマクロが何も登録されていなくても「開こうとしているブックには、マクロが…」メッセージが表示されてしまうという不具合がある。範囲名もチェックしよう。

図3 名前定義ウインドウ