ダウンロードしたExcelのマクロが動かなくなったら
2022年8月のWindows Updateで、ダウンロードしたExcelなどのマクロが動作しないようになりました。
ブックを開くとこのようなメッセージが表示されることがあります。
「セキュリティ リスク このファイルのソースが信頼できないため、Microsoft によりマクロの実行がブロックされました。 詳細を表示」
これが表示されている場合、そのブックのマクロは動きません。「詳細を表示」ボタンを押しても動きません。動かしたい場合は一度ブックを閉じて、以下に紹介する対応をしてから再度開きなおす必要があります。
ブックをコピペして別ファイルを作ったりしても状況は変わりません。
以下で解決方法を4つ紹介します。
原因:ダウンロードしたことを示す情報が付く → 削除しないといけない
WindowsはインターネットなどのネットワークにあるExcelマクロブック(*.xlsm)をダウンロードした際に、元のファイルに特殊な隠し情報を加えた状態でダウンロードします。
この隠し情報は「Mark of the Web」と呼ばれます。でもこの名前は忘れていいです。
この特殊な隠し情報は「インターネットなどからダウンロードしたから開くと危険かもよ?」ということを示しています。Excelでブックを開いた際に隠し情報があると「マクロが危険」と判定され、それによってマクロの実行がブロックされます。
そのため、この隠し情報を削除してしまえば、マクロは実行できるようになります。
削除する方法は2通りあり、ファイルのプロパティを変更する簡単な方法と、Powershellを使って変更するちょっと手を動かしてやる方法があります。
いずれの方法も、ダウンロードした度に実施する必要があるため、ダウンロードする頻度が多い場合は面倒に感じると思います。
解決方法 1. ファイルのプロパティを変更して隠し情報を削除する方法
この方法は一番わかりやすい方法です。
ダウンロードしたファイルをエクスプローラで右クリックしてプロパティを開き、「全般」タブの一番下にある「セキュリティ」の「許可する」のチェックを付けて、OKボタンを押します。これでマクロが使えるようになります。
一度チェックを付けて適用 or OKしたあとは、ダウンロードしたことの隠し情報は削除されるため、プロパティを開いてもこの「セキュリティ」欄自体が無くなるため、チェックを外すことはできません。
先にも書いた通り、この方法はダウンロードしたファイルごとに対応が必要な方法です。
解決方法 2. Powershellで隠し情報を削除する方法
ダウンロードする頻度が多いのであれば以下の方法が一番簡単です。
一度ps1ファイルとbatファイルを用意してしまえば、あとはずっとそれにブックをドラッグするだけの方法です。
ダウンロードしたファイルが多い場合、1つずつプロパティを設定するのは面倒です。多数ある場合は以下のPowershellファイルとbatファイルを用意するとラクに隠し情報を削除できます。
まず、Powershellのファイルを作成します。ファイル名はなんでもいいのですが、ここではunblock.ps1とします。拡張子ps1はPowershellファイルであることを意味します。
1. 新規ファイルとしてunblock.ps1を作成し、メモ帳などのテキストエディタで以下を書いて保存します。
unblock.ps1
1 2 3 4 |
foreach ($arg in $args) { Unblock-File -Path $arg } |
2. 次に、新規ファイルとしてunblock.batを作成して、上と同様にテキストエディタで以下を書いて保存します。
unblock.bat
1 |
powershell.exe -ExecutionPolicy RemoteSigned -File unblock.ps1 %* |
作成するものは以上です。
あとは、ダウンロードしたブックがあるフォルダにunblock.ps1とunblock.batを置いて、ダウンロードしたブックをunblock.batにドラッグすれば解除されます。複数ブックをドラッグ可能です。
解除済みのブックをドラッグしても問題ありません。何も変わらないだけです。
一応ですが、unblock.ps1とunblock.batが何をやっているかというと、ダウンロード時に付けられる隠し情報はPowershellの「Unblock-File」というコマンドに対象のブックを引数で渡すことで削除できるようになっています。
ただ、Powershellのps1ファイルにはドラッグしても処理を行えないため、batファイルを用意してそちらにブックをドラッグして、batファイルからps1ファイルにドラッグされたブックを渡すようにしています。
使い方の見本は以下の通りです。
1. unblock.ps1とunblock.batをブックと同じフォルダに置きます。
2. 隠し情報を解除したいブックを選択します。複数選択可。
3. 選択したブックをunblock.batにドラッグします。これ以降はマクロの実行が可能になります。
解決方法 3. USBメモリにダウンロードして隠し情報が付かないようにする
この方法はプロパティを変更したり設定を変えたりする必要がなく、準備としてUSBメモリを挿しておくだけです。設定は何も変える必要がありません。PCの利用状況(USBメモリを挿しっぱなしの場合とか)によっては一番簡単な方法になります。
マクロの実行がブロックされるのは、ダウンロードする際にWindowsがファイルに隠し情報の「Mark of the Web」が付与されていることが原因ですが、この隠し情報はファイルシステムがNTFSのADSという仕組みを利用しているため付与自体がNTFSに限定されるため、FAT32の場合には付与されません。
FAT32はWindowsの上ではほとんど見かけなくなりましたが、USBメモリなどの外部記憶装置では主流です。
そこでダウンロード先をUSBメモリにすると、ファイルに隠し情報の「Mark of the Web」が付与されず、マクロの実行は可能になります。
USBメモリにダウンロードしたファイルをPCに移動やコピーしてもマクロは実行できます。
解決方法 4. 指定フォルダを安全である場所として設定する
この方法は、指定フォルダに置いてあるブックは安全である、という設定をExcelで行います。あまりお勧めしません。
Excelには、このフォルダにあるブックは信頼があるとみなす、という設定を行うことが出来ます。「信頼できる場所」という言い方をします。
極端な方法ですが、ダウンロード先が「ダウンロード」フォルダの場合は、C:\Users\[ユーザー名]\Downloads\ フォルダを設定しておくと、ダウンロードしたブックは安全と見なされ隠し情報である「Mark of the Web」が付いていてもそれを無視するため、マクロは実行可能です。
ただ、セキュリティ対策ソフトを未導入の状態でダウンロードフォルダを信頼するのは危険です。
設定方法は以下の通りです。
1. ファイルメニュー→Excelのオプションを開きます。(ファイルメニューを開いて、一番左下に「オプション」とあるのでそれをクリック)
2. 左のトラストセンターを選択し、「トラストセンターの設定」ボタンを押します。
3. 左から「信頼できる場所」を選択し、右下の「新しい場所の追加」をクリックします。
4. 「パス」にフォルダパスを設定します。必要であれば「この場所のサブフォルダーも信頼する」にチェックを付けます。このフォルダのみを信頼する場合にはチェックは付けません。
この「信頼できる場所」の設定には注意点があります。
それは、ここで設定したフォルダにあるブックのマクロは実行できますが、ダウンロードしたときの隠し情報である「Mark of the Web」は付与されたままになっているという点です。
「信頼できる場所」に設定されたフォルダでブックを開いた場合は、隠し情報の「Mark of the Web」を無視しているだけで、インターネットなどからダウンロードしたブックである、という情報は残ったままになっています。
そのため、「信頼された場所」のフォルダから別のフォルダに移動やコピーすると、隠し情報の「Mark of the Web」は残ったままのためマクロの実行が出来なくなります。
マクロを人に渡したりするつもりであれば、隠し情報は上記の方法で削除しておいた方がよいでしょう。
その他の方法はお勧めしません
上に挙げた方法以外にも、ネットワーク関連の設定をいじってマクロを実行できるようにする方法が複数あり、それらで対応が可能になることはありますが、いずれもお勧めしません。
Excelブックにデジタル証明書を付ける方法、hostsファイルを編集する方法、インターネットプロパティでセキュリティレベルを変える方法、などがありますが、いずれも詳しくない人にとっては自分がどういう設定しているのかを理解できないため、VBA以前にPC全体のセキュリティを弱めることになりかねません。
中途半端に知識を入れて設定するぐらいなら、むしろ知らない方が安全です。
例えば上に挙げたデジタル証明書ですが、会社などでデジタル証明書で運用しようとしても、「面倒になってしなくなる」「嫌がられる」「秘密鍵って何?」「難しくてやってられん」「もっと簡単な方法ないの?」などの反応があるのが当たり前で、結局続けられないことが多いでしょう。
どうしてもそれらの設定をしたい方は別サイトを探してみてください。安全のためにここではあえて紹介しません。
Microsoftのヘルプが分かりにくい?
マクロが動かなくなった原因は、Microsoftによるセキュリティの強化、ではありますが、今まで出来ていたことが出来なくなるというのはほとんどの人からすると嫌がらせと感じるでしょう。
対応方法が書いてあるMicrosoftのヘルプページはあることにはありますが、相変わらずヘルプの書き方が超絶下手です。読みにくかったり意味が分からず読むのを諦めた人はたくさんいるでしょう。英文のページも読みにくさは同様です。
URLは一応載せておきます。
https://docs.microsoft.com/ja-jp/deployoffice/security/internet-macros-blocked
このページを作ったのも、公式サイトが読みにくくて仕方がないのがきっかけです。
解決しない方法
上に挙げた解決方法の他にも、「これなら解決できるのでは?」と思いつく物がいくつかあると思います。
しかし、以下の対応はいずれも解決できません。
- ダウンロードしたファイルをコピーしたりファイル名を変えても、ブロックされたままです。
- ファイルメニュー→オプション→Excelのオプションで「トラストセンター」→「トラストセンターの設定」ボタン→マクロの設定→「VBAマクロを有効にする」 に設定してもブロックされたままです。
- PC再起動しても、ブロックされたままです。
いずれの場合も、隠し情報の「Mark of the Web」が残っていればマクロは実行できません。