はじめに
Excel2019までは共有フォルダにあるVBAファイルは、
トラストセンターでマクロを許可するだけで実行できました。
しかし、Excel2021からはこの方法だけでは
「このファイルのリソースが信頼できないため、Microsoftによりマクロの実行がブロックされました。」
というエラーが発生することがあります。
この問題を解決するための手順を以下にまとめました。
手順
1. 共有フォルダのIPアドレスを「信頼済みサイト」に追加する
Windowsキー + R
を押して「ファイル名を指定して実行」を開き、inetcpl.cpl
と入力して「OK」をクリック。- インターネットのプロパティウィンドウで「セキュリティ」タブをクリック。
- 「信頼済みサイト」をクリックし、「サイト(S)」をクリック。
- 共有フォルダのIPアドレスを「file://192.***.*.***」の形式で入力し、「追加」をクリック。
- 追加したサーバーが信頼済みサイトに含まれていることを確認。
2. エクセルのトラストセンターで[信頼できる場所]に共有フォルダのパスを追加する
- エクセルを開き、「ファイル」をクリック。
- 「その他」→「オプション」をクリック。
- 「Excelのオプション」ウィンドウで「トラストセンター」をクリック。
- 「トラストセンターの設定(T)」をクリック。
- [信頼できる場所]→[新しい場所の追加(A)]をクリック。
- 信頼できる場所にフォルダを選択し、OKをクリック。
※共有フォルダの場所はサーバー名で指定してください。IPアドレスだとエラーが出ます。 - [サブフォルダーも信頼する]にチェックをつけてOKをクリック。
- [信頼できる場所]に指定したフォルダーが表示されていることを確認しOKをクリック。
3. 自己署名証明書を作成する
Windowsキー + R
を押して「ファイル名を指定して実行」を開き、selfcert.ext
と入力して「OK」をクリック。- もしファイルが見つからない場合は、以下のパスを確認:
C:\Program Files\Microsoft Office\root\Office16\SELFCERT.EXE
※私の環境だとOffice16ですが、ご自身のバージョンに合わせて読み替えてください。
- もしファイルが見つからない場合は、以下のパスを確認:
selfcert.ext
を実行し、手順に従って自己署名証明書を作成。
4. 作成した自己署名証明書をインポートする
Windowsキー + R
を押して「certmgr.msc」と入力し、証明書マネージャを開く。- 左ペインで「信頼されたルート証明機関」→「証明書」を選択し、インポートした証明書が存在するか確認。
- 「すべてのタスク」→「インポート」を選択してエクスポートした証明書をインポート。
- 左ペインで「信頼された発行元」に作成した証明書をインポート。
- Excelの「ファイル」→「オプション」→「セキュリティセンター」→「セキュリティセンターの設定」→「信頼できる発行元」を確認。
- 表示されていなければ次へ進む。
5. インポートだけでは証明書を認識しない場合、証明書をエクスポートする
- 「個人」→「証明書」から自己署名証明書をエクスポート(秘密キーはエクスポートしない)。
6. Windows PowerShellで証明書を認識させる
- Windows PowerShellを管理者権限で起動。
- 以下のスクリプトを実行:
$certPath = "C:\Windows\System32\VBA自己署名証明書.cer"
$cert = New-Object System.Security.Cryptography.X509Certificates.X509Certificate2
$cert.Import($certPath)
$store = New-Object System.Security.Cryptography.X509Certificates.X509Store "TrustedPublisher", "LocalMachine"
$store.Open("ReadWrite")
$store.Add($cert)
$store.Close(
※自己署名証明書の名前(=VBA自己署名証明書)はご自身で付けた名前に変えてください。
まとめ
上記の手順に従うことで、Excel2021における共有フォルダのVBA実行エラーを解決できます。特に、自己署名証明書の作成とインポート、PowerShellでの認識が重要なポイントです。これで、共有フォルダにあるVBAファイルを複数人で利用することが可能になります。