やじうまの杜

ExcelのVBAマクロがブロックされて解除できない! ブロックの解除方法を解説

「Microsoft Office」のセキュリティ強化に戸惑いの声

 「やじうまの杜」では、ニュース・レビューにこだわらない幅広い話題をお伝えします。

 今月初めごろより、「Twitter」で『Excel の VBA 実行がブロックされるようになった』というツイートが多くみられるようになりました。以前からアナウンスされていた「Microsoft Office」のセキュリティ強化策(一度撤回)が、一般の環境に展開され始めたようです。

VBAマクロがブロックされるのはなぜ?

 「Office」はマルウェアの標的にされることが多いアプリですが、その経路の多くはVBAマクロです。インターネットからダウンロードしたファイルやメールに添付されたドキュメントには悪意あるマクロが含まれていることがあり、扱いには注意を要します。

 そのため、Microsoftは「Office」に 「保護ビュー」 と呼ばれるセキュリティ機能を実装しており、ユーザーが怪しいマクロを開くと黄色いメッセージバーを表示し、ドキュメントを自動的に読み取り専用にします。ユーザーが安全を確認し、保護ビューを手動で解除してはじめて、ドキュメントに含まれるマクロは実行されるというわけです。

ユーザーが怪しいマクロを開くと黄色いメッセージバーを表示し、ドキュメントを自動的に読み取り専用にする「保護ビュー」

 しかし、なかには「保護ビュー」の警告をよく読まず、編集を有効化してしまうユーザーもいます。そのため、今回のセキュリティ強化により インターネットからダウンロードしたマクロは既定でブロック されるようになりました。「Excel」以外の「Office」アプリも対象です。

インターネットからダウンロードしたマクロは既定でブロック

 執筆時現在、この措置が有効になっているチャネルとバージョンは以下の通りです(同社のサポートサイトより)。

  • 最新チャンネル(プレビュー):バージョン 2203(2022年4月12日よりロールアウト開始)
  • 最新チャンネル:バージョン 2206(2022年7月27日よりロールアウト開始)
  • 月次エンタープライズチャネル:未定
  • 半期エンタープライズ チャネル(プレビュー):未定
  • 半期エンタープライズチャネル:未定

 IT管理者が社内のデバイスを集中管理している比較的大規模な会社にはまだ展開されていませんが、いずれ実施されるはずなので、社内への通知と対策が必要となるでしょう。

「Microsoft Office」のチャネル、バージョンはバックステージ([ファイル]画面)の[アカウント]セクションで確認可能

ブロックを解除する方法

 さて、それはともかく、仕事に必要なマクロがブロックされて使えないのは困りものですよね。どうすればブロックを解除することができるのでしょうか。

 マクロがブロックされるのは 信頼できない場所 、つまりインターネットなどから入手したファイルのみです。そのため、信頼できる場所から入手するか、信頼できるファイルであればブロックされることはありません。また、ファイルに記された「信頼できない場所から入手した」という印を消してしまえば、「Excel」はマクロをブロックしません。

 まとめると、以下の方法でブロックを回避できます。

  • 電子署名されたマクロを使う(発行元が明らかで、改竄もない)
  • 信頼できる場所から入手する(社内でマクロの保存場所を定め、セキュリティ担当者がチェックすることで信頼性を担保する)
  • インターネットから入手したというマーク(Mark of the Web、Zone.Identifier)を削除する

 個人で「Excel」を利用している場合は、最後の「インターネットから入手したというマークを削除する」方法がもっとも手軽でしょう。

 このマークはNTFSファイルシステムの「代替データストリーム」(Alternate Data Streams:ADS)という機能で付与された特別なデータで、以下のコマンドを利用すれば「メモ帳」でも開くことができます。

notepad.exe <ファイルパス>:Zone.Identifier

 「ZoneId=3」というのが、インターネットから入手したことを示すマークです。

「メモ帳」で「代替データストリーム」を確認

 このマークの削除は、ファイルのプロパティダイアログから可能。[全般]タブを開き、一番下の[セキュリティ]セクションにある[許可する]チェックボックスをONにし、ダイアログの[OK]または[適用]ボタンを押すだけです。

マークの削除は、ファイルのプロパティダイアログから可能

 いちいちこうするのが面倒な場合は、「PowerShell」の「Unblock-File」コマンドレットを利用してもよいでしょう。ただし、マークを削除する際はファイルの安全性をチェック(ウイルススキャンなど)することを忘れないようにしてください。