目次
- はじめに:Excelマクロが「セキュリティ上の理由で無効」になる背景
- Excelマクロがブロックされる主な2つの原因
- Mark of the Web (MOTW) の技術的な仕組み
- 単一ファイルのブロックを解除する方法
- 根本的な解決策:「信頼できる場所」の設定方法
- ネットワーク上のファイルがブロックされる場合の注意点(イントラネット設定)
- システム管理者向けの対策と管理手法
- 今後のマクロ運用とセキュリティのベストプラクティス
- まとめ
はじめに:Excelマクロが「セキュリティ上の理由で無効」になる背景
業務効率化に欠かせないExcelのVBAマクロですが、近年、メールに添付されたファイルやインターネットからダウンロードしたマクロ付きファイル(.xlsmなど)を開いた際に、「セキュリティ リスク このファイルのソースが信頼できないため、Microsoft によりマクロの実行がブロックされました」という赤い警告バーが表示され、マクロが一切実行できなくなる事象が急増しています。
これは、ソフトウェアの不具合やパソコンの故障ではありません。Microsoftが2022年に実施したOfficeアプリケーションに対するセキュリティアップデートによる仕様変更が直接的な原因です。Emotet(エモテット)をはじめとするマルウェアやランサムウェアの多くが、メールに添付されたOfficeファイルのマクロ機能を悪用して感染を広げていたため、Microsoftは「インターネット経由で入手したマクロはデフォルトでブロックする」という強硬かつ効果的なセキュリティ対策に踏み切りました。
本記事では、Excelマクロがブロックされる正確な原因と技術的な背景を解説し、安全性を保ちながら業務に必要なマクロを動作させるための「信頼できる場所」の設定方法や、ネットワークドライブ利用時のトラップとその回避策について、詳細かつ網羅的に解説します。
Excelマクロがブロックされる主な2つの原因
マクロが実行できない場合、主に以下の2つの原因が考えられます。
原因1:インターネットから取得したファイル(MOTW属性)
前述の通り、最も多い原因がこれです。メール(Outlookなど)の添付ファイル、社内ポータルからのダウンロード、クラウドストレージ(OneDriveやSharePoint、Google Driveなど)の同期フォルダから取得したファイルには、WindowsのOSレベルで「インターネットから取得したファイルである」という目印が付与されます。この目印があるファイルをExcelで開くと、Excel側がそれを検知して強制的にマクロを無効化します。
原因2:トラストセンター(セキュリティセンター)の設定
インターネットから取得したファイルでなくても、Excel自体のセキュリティ設定(トラストセンター)で「警告を表示せずにすべてのマクロを無効にする」が選択されている場合、いかなるマクロも実行されません。通常は「警告を表示してすべてのマクロを無効にする」が推奨設定となっており、この場合は黄色い情報バーで「コンテンツの有効化」ボタンが表示されます。
Mark of the Web (MOTW) の技術的な仕組み
インターネットからダウンロードしたファイルに付与される目印は、専門用語で「Mark of the Web (MOTW)」と呼ばれます。これはNTFS(Windowsの標準ファイルシステム)の「代替データストリーム (Alternate Data Stream : ADS)」という隠し領域に書き込まれる情報です。
ファイル自体の中身(データ)を改変することなく、ファイルに対してメタデータを付与する仕組みです。具体的には、ファイル名に対して Zone.Identifier というストリームが追加され、そこにどこからダウンロードされたかのゾーン情報が記録されます。
コマンドプロンプトを使用して、ファイルにMOTWが付与されているかを確認することができます。以下のコマンドを実行してみてください。
dir /R ターゲットファイル名.xlsm
実行結果に ターゲットファイル名.xlsm:Zone.Identifier:$DATA のような行が表示された場合、そのファイルにはMOTW属性が付与されており、Excelによってマクロがブロックされる対象となります。
単一ファイルのブロックを解除する方法
自分が作成した安全なファイルである、あるいは送信元が確実で業務上必要なファイルである場合、個別にブロックを解除することができます。
プロパティから「許可」する
最も簡単で一般的な解除方法は、Windowsのエクスプローラーからファイルのプロパティを変更することです。
- エクスプローラーを開き、対象のExcelファイル(.xlsm など)を保存したフォルダに移動します。
- 対象のファイルを右クリックし、メニューの一番下にある「プロパティ」を選択します。
- 「全般」タブの最下部に「セキュリティ: このファイルは他のコンピューターから取得したものです。コンピューターを保護するため、このファイルへのアクセスはブロックされる可能性があります。」というメッセージが表示されていることを確認します。
- その右側にある「許可する(またはブロックの解除)」のチェックボックスにチェックを入れます。
- 「適用」ボタン、または「OK」ボタンをクリックしてプロパティ画面を閉じます。
これでMOTW属性が削除され、次回以降そのファイルを開いた際にはマクロを実行できるようになります。
PowerShellを使って複数ファイルを一括解除する
数十個のファイルに対して一つ一つプロパティを開いてブロックを解除するのは非現実的です。このような場合は、Windows標準のPowerShellを使用して、特定のフォルダ内のすべてのファイルのブロックを一括で解除することができます。
以下のコマンドラインコードをコピーしてPowerShellで実行してください。
# 指定したフォルダ内のすべてのファイルのブロックを解除するコマンド
$TargetFolder = "C:\Users\YourUsername\Downloads\MacroFiles"
Get-ChildItem -Path $TargetFolder -Recurse | Unblock-File
※ C:\Users\YourUsername\Downloads\MacroFiles の部分は、ご自身の環境に合わせて実際のフォルダパスに変更して使用してください。-Recurse オプションをつけることで、サブフォルダ内のファイルも含めて一括で処理されます。
根本的な解決策:「信頼できる場所」の設定方法
毎回ファイルのプロパティからブロックを解除するのは手間がかかります。社内で共有しているマクロツールなど、頻繁に利用するファイルがある場合は、そのファイルが保存されているフォルダを「信頼できる場所(Trusted Locations)」としてExcelに登録することが最も効率的で根本的な解決策となります。
「信頼できる場所」に指定されたフォルダ内に保存されているファイルは、MOTW属性が付与されていたとしても、Excelはセキュリティチェックをスキップしてマクロを実行します。
ローカルドライブを「信頼できる場所」に設定する手順
ご自身のパソコン(CドライブやDドライブなど)の中にある特定のフォルダを信頼できる場所として登録する手順は以下の通りです。
- Excelを起動し、空のブックを開きます。
- 画面左上の「ファイル」タブをクリックし、左側のメニューの一番下にある「オプション」をクリックします。
- 「Excel のオプション」ウィンドウが開いたら、左側のメニューから「トラスト センター」を選択します。
- 右側に表示される「トラスト センターの設定(T)…」ボタンをクリックします。
- 「トラスト センター」ウィンドウが開いたら、左側のメニューから「信頼できる場所」を選択します。
- 右下の「新しい場所の追加(A)…」ボタンをクリックします。
- 「Microsoft Office の信頼できる場所」ウィンドウが開きます。「参照(B)…」ボタンをクリックして、マクロ付きファイルが保存されているフォルダを選択します。
- そのフォルダのサブフォルダもすべて信頼したい場合は、「この場所のサブフォルダーも信頼する(S)」のチェックボックスにチェックを入れます。
- 「OK」をクリックしてウィンドウを順番に閉じます。
ネットワークドライブ(共有フォルダ)を「信頼できる場所」に設定する手順
企業環境では、ファイルサーバーやNASなどのネットワークドライブ上にマクロファイルを置いているケースが多いでしょう。ネットワーク上の場所を登録する場合は、もう一つ設定が必要です。
- 上記の手順と同様に「トラスト センター」の「信頼できる場所」を開きます。
- ウィンドウの下部にある「自分のネットワーク上にある信頼できる場所を許可する (推奨しません)」というチェックボックスにチェックを入れます。このチェックを入れないと、ネットワークパスを登録することができません。
- 「新しい場所の追加」ボタンをクリックし、「参照」ボタンからネットワークドライブ(Zドライブなど)や、UNCパス(例:
\\ServerName\SharedFolder)を指定します。 - 「OK」で設定を保存します。
ネットワーク上のファイルがブロックされる場合の注意点(イントラネット設定)
ネットワークドライブを信頼できる場所に追加しようとしてもエラーになる、あるいは追加したのにマクロがブロックされるというトラブルが頻発します。この場合、指定しているパスの形式(IPアドレスかホスト名か)がWindowsのセキュリティゾーンの認識と食い違っていることが原因です。
Windowsは、対象のサーバーが「ローカル イントラネット(社内ネットワーク)」なのか「インターネット(外部)」なのかを判断しています。もし \\192.168.1.100\Share のようにIPアドレスで指定している場合や、\\server.domain.local\Share のようにFQDN(完全修飾ドメイン名)で指定している場合、Windowsはこれをデフォルトで「インターネットゾーン」と見なし、MOTWを付与してしまいます。
これを解決するためには、Windowsの「インターネット オプション」から該当のサーバーを「ローカル イントラネット」として明示的に登録する必要があります。
- Windowsのスタートメニューで「インターネット オプション」と検索し、起動します。
- 「セキュリティ」タブを選択します。
- 「ローカル イントラネット」のアイコンをクリックし、「サイト(S)」ボタンをクリックします。
- 「詳細設定(A)」ボタンをクリックします。
- 「この Web サイトをゾーンに追加する(D):」の入力欄に、ファイルサーバーのIPアドレスやホスト名を入力します。
入力する値の例は以下の通りです。
file://192.168.1.100
file://server.domain.local
追加後、「閉じる」および「OK」を押して画面を閉じます。これにより、このファイルサーバーからのファイルは社内ネットワークのものとして扱われ、MOTWが付与されなくなり、正常にマクロが動作するようになります。
システム管理者向けの対策と管理手法
社員数が数人であれば各自で設定を行えますが、数十人、数百人の従業員がいる企業において、各個人のPCで「信頼できる場所」や「インターネットオプション」を設定させるのは情シス部門への問い合わせを増やす原因となり、セキュリティの統制も取れなくなります。
企業環境においては、以下の手法を用いて一元管理することが推奨されます。
デジタル署名と「信頼できる発行元」の利用
「信頼できる場所」の代わりに、マクロコード自体にデジタル署名を付与し、その証明書を社内PCの「信頼できる発行元」に登録するという方法です。この方法であれば、ファイルがどこに保存されていようと、改ざんされていない限りマクロの実行が許可されます。
自己署名証明書(オレオレ証明書)を作成して運用することも可能ですが、Active Directoryの証明書サービスを利用して社内用のコード署名証明書を発行し、GPO(グループポリシー)で全クライアントPCに配布する方法が最もセキュアで管理が容易です。
グループポリシーによる管理
Active Directory環境があれば、グループポリシーオブジェクト(GPO)を使用して「信頼できる場所」の設定を全社に一括適用させることができます。
Officeの管理用テンプレート(ADMXファイル)をドメインコントローラーに導入することで、以下のパスから設定が可能です。
- ポリシーのパス: ユーザーの構成 > ポリシー > 管理用テンプレート > Microsoft Excel 2016 > Excel のオプション > セキュリティ > セキュリティ センター > 信頼できる場所
- ここで「信頼できる場所 #1」などを有効にし、ファイルサーバーのUNCパスを指定します。
- 同時に「ネットワーク上の信頼できる場所を許可する」のポリシーも有効にする必要があります。
今後のマクロ運用とセキュリティのベストプラクティス
マクロがブロックされるからといって、セキュリティレベルを下げるような設定(すべてのマクロを無効化せずに許可するなど)を行うことは絶対に避けてください。マルウェアの被害に遭うリスクが飛躍的に高まります。
現在のセキュリティ環境におけるマクロ運用のベストプラクティスは以下の通りです。
- 最小権限の原則: 「信頼できる場所」は必要最低限のフォルダのみに限定する。デスクトップやダウンロードフォルダ全体を信頼できる場所に設定することは絶対にやめる。
- 共有フォルダの権限管理: 「信頼できる場所」に設定したネットワーク共有フォルダは、誰でも書き込める状態(フルコントロール)にしない。悪意のある者がそこにマルウェア入りファイルを置けば、全社員のPCで実行されてしまう危険性があるため、書き込み権限は管理者のみに制限する。
- 代替テクノロジーへの移行: VBAマクロは古い技術であり、セキュリティ上の懸念が付き纏います。Microsoft 365環境を利用している場合は、TypeScriptベースで動作し、Webブラウザ版Excelでも動作する「Office スクリプト」や、ノーコード・ローコードで自動化を実現できる「Power Automate」への移行を検討する。これらはクラウドベースで実行されるため、MOTWの制約を受けにくく、より現代的なセキュリティモデルに準拠しています。
まとめ
Excelマクロが「セキュリティ上の理由で無効」になる主な原因は、インターネットやメール経由で取得したファイルに付与される「MOTW属性」によるMicrosoftのセキュリティブロック機能です。これはユーザーをマルウェアの脅威から守るための重要な機能です。
安全が確認できているファイルについてこの制限を回避するためには、単一ファイルであればプロパティからの「許可」、定期的に利用する社内ツールなどであればトラストセンターからの「信頼できる場所」の登録が効果的です。また、ネットワークドライブを利用している場合は、インターネットオプションにおける「ローカル イントラネット」のゾーン設定も併せて確認することが重要です。
企業全体で運用する場合は、個別のユーザーに設定を任せるのではなく、システム管理者がグループポリシーやデジタル署名を活用して適切にコントロールすることで、業務効率とセキュリティのバランスを保つことができます。マクロの利便性を損なうことなく、本記事の手順を参考にして安全な運用環境を構築してください。