Word、Excel、PowerPointといったMicrosoft Officeアプリには、定型的な作業を自動化することができるVBA(Visual Basic for Applications)マクロというプログラム機能が搭載されています。
VBAマクロを上手に活用すれば、数時間かかっていた作業を数分で終わらせるといった大幅な効率化も可能な便利機能である反面、悪意のあるVBAマクロを含むファイルでマルウェアに感染させるなどの悪用も後を絶ちません。
そこで、Windows向けのMicrosoft Officeでは、セキュリティ対策を強化するために、インターネットなどの信頼できない場所から入手したVBAマクロを含むOfficeファイルでは、VBAマクロの実行が既定でブロックされるようになりました。
ですが、業務などでVBAマクロを含むOfficeファイルを開くことがある場合は、実行がブロックされては困るケースもあるでしょう。
そこでここでは、インターネットなどの信頼できない場所から入手したVBAマクロを含むOfficeファイルで、VBAマクロが実行できないときに対処方法を紹介します。
目次
VBAマクロを含むOfficeファイルを開くと
Microsoft Officeでは、インターネットなどから入手したOffice形式ファイルを開くと「保護ビュー」と呼ばれる機能で、以下の画面のように黄色いメッセージバーが表示され、ユーザーが明示的に「編集を有効にする」ボタンをクリックしない限り、Officeファイルを自動的に読み取り専用にしてくれるセキュリティ機能が搭載されています。
さらに最近では、この機能が強化されてVBAマクロを含むOfficeファイルを開いた場合、赤色のメッセージバーも表示されるようになり、ボタンをクリックするだけではVBAマクロが実行できなくなっています。
VBAマクロのブロックを解除する
インターネットなどの信頼できない場所から入手したVBAマクロを含むOfficeファイルを開いて、VBAマクロを実行したい場合は、該当ファイルに付与されている「Mark of the Web(MOTW)」という属性を解除する必要があります。
MOTW属性は、信頼できない場所から入手したファイルにWindowsが自動的に付与する属性で、Officeアプリからではなく、ファイルのプロパティ画面などから解除します。
たとえば、インターネットなどから入手したVBAマクロを含むエクセルファイルの付与されたMOTW属性を解除するには、該当ファイルを右クリックして、メニューから「プロパティ」を選択します。
ファイルのプロパティ画面が表示されるので「全般」タブの下部にある「セキュリティ:このファイルは他のコンピューターから取得したものです。このコンピューターを保護するため、このファイルへのアクセスはブロックされる可能性があります。」の横にある「許可する」にチェックを入れて「OK」をクリックします。
以上で、該当ファイルのMOTW属性が解除され、ファイルを開いてセキュリティ警告のメッセージバーで「コンテンツの有効化」ボタンをクリックすれば、VBAマクロを実行できるようになります。
MOTW属性を一括解除したいときは
MOTW属性を解除したいOfficeファイルがたくさんある場合は、一つずつプロパティ画面を開いて解除するのは手間がかかります。
そのようなときは、PowerShellのUnblock-Fileコマンドレットを利用することで一括解除できます。
たとえば、E:¥Testフォルダー内にあるファイルのMOTW属性を一括で解除したいときは、PowerShellを起動して以下のようにコマンドを実行します。
PS> Get-ChildItem E:\Test\ | Unblock-File
コマンド実行後は、画面上には特に何も表示されませんが、プロンプトが返ってくればMOTW属性が一括解除されています。
あとがき
ちなみに、MOTW属性が付与されるのは、Windows環境でファイルシステムがNTFSの場合のみとなります。