はじめに
インターネットから取得したマクロを含むOfficeファイルは、マクロの実行がブロックされる仕様となっている。
これは、Mark of the Web(MOTW)がファイルに付与されユーザをマルウェア感染などから保護している。
といっても、業務上意図的にマクロを有効化するニーズはもちろんあるわけで、マクロ有効化の方法はMSのサイトにも公開されている。1
その他の有効化手段として、registryの設定でもマクロのブロックの無効化が可能といった情報を知ったので、実際に試してみた。
registry設定値とその役割
こちらのサイト2を参照に設定値とマクロのブロック機能が有効化されるのか無効化されるのか確認する。
- registry hive : HKEY_CURRENT_USER
- registry path : software\policies\microsoft\office\16.0\excel\security
- value : blockcontentexecutionfrominternet
- value type : REG_DWORD
- data : 1 (マクロのブロックが有効)
- data : 0 (マクロのブロックが無効)
実行環境
- OS : Windows 10
- Excel 2016
実行内容
下準備
マクロを含むexcelファイルを用意し、インターネット上からダウンロードする。
デフォルト状態のregistryの設定を確認したところ、該当する設定はなかった。
デフォルト状態(レジストリに設定なし)でマクロのブロック状態を確認
用意したexcelを開き、メッセージの内容を確認する。
「編集を有効にする」を押下する。
マクロのブロックが機能していることが確認できる。
マクロのブロックを無効化設定しマクロのブロック状態を確認
registryにマクロのブロックを無効化する設定を導入する。
用意したexcelを開き、メッセージの内容を確認する。
「コンテンツの有効化」を押下すると、メッセージは何も表示されずマクロが実行できる状態になっていることを確認できる。
マクロのブロックを有効化設定しマクロのブロック状態を確認
registryにマクロのブロックを有効化する設定を導入する。
用意したexcelを開き、メッセージの内容を確認する。
まとめ
おおむね想定した通りにregistryの設定でマクロのブロックが無効化できることが確認できた。
しかしexcelで表示されるメッセージが細かく変化することは想定外だった。この変化は何がハンドルしているか気になるところ。
また、一般的なユーザがマクロのブロックを無効化する手段としては他の方法で事足りるため、registry設定でマクロのブロックを無効化する必要性はないように感じた。
そのため、社内で設定しているユーザがいればヒアリングなど事情の確認は必要だろう。
参考
- Macros from the internet will be blocked by default in Office
- Block macros from running in Office files from the Internet