Excel2021を使い始めて、共有フォルダにあるVBAコードが実行エラーになったら?

はじめに

Excel2019までは共有フォルダにあるVBAファイルは、
トラストセンターでマクロを許可するだけで実行できました。
しかし、Excel2021からはこの方法だけでは

「このファイルのリソースが信頼できないため、Microsoftによりマクロの実行がブロックされました。」

というエラーが発生することがあります。
この問題を解決するための手順を以下にまとめました。

手順

1. 共有フォルダのIPアドレスを「信頼済みサイト」に追加する

  1. Windowsキー + R を押して「ファイル名を指定して実行」を開き、inetcpl.cpl と入力して「OK」をクリック。
  2. インターネットのプロパティウィンドウで「セキュリティ」タブをクリック。
  3. 「信頼済みサイト」をクリックし、「サイト(S)」をクリック。
  4. 共有フォルダのIPアドレスを「file://192.***.*.***」の形式で入力し、「追加」をクリック。
  5. 追加したサーバーが信頼済みサイトに含まれていることを確認。

2. エクセルのトラストセンターで[信頼できる場所]に共有フォルダのパスを追加する

  1. エクセルを開き、「ファイル」をクリック。
  2. 「その他」→「オプション」をクリック。
  3. 「Excelのオプション」ウィンドウで「トラストセンター」をクリック。
  4. 「トラストセンターの設定(T)」をクリック。
  5. [信頼できる場所]→[新しい場所の追加(A)]をクリック。
  6. 信頼できる場所にフォルダを選択し、OKをクリック。
    ※共有フォルダの場所はサーバー名で指定してください。IPアドレスだとエラーが出ます。
  7. [サブフォルダーも信頼する]にチェックをつけてOKをクリック。
  8. [信頼できる場所]に指定したフォルダーが表示されていることを確認しOKをクリック。

3. 自己署名証明書を作成する

  1. Windowsキー + R を押して「ファイル名を指定して実行」を開き、selfcert.ext と入力して「OK」をクリック。
    • もしファイルが見つからない場合は、以下のパスを確認:
      • C:\Program Files\Microsoft Office\root\Office16\SELFCERT.EXE
        ※私の環境だとOffice16ですが、ご自身のバージョンに合わせて読み替えてください。
  2. selfcert.ext を実行し、手順に従って自己署名証明書を作成。

4. 作成した自己署名証明書をインポートする

  1. Windowsキー + R を押して「certmgr.msc」と入力し、証明書マネージャを開く。
  2. 左ペインで「信頼されたルート証明機関」→「証明書」を選択し、インポートした証明書が存在するか確認。
  3. 「すべてのタスク」→「インポート」を選択してエクスポートした証明書をインポート。
  4. 左ペインで「信頼された発行元」に作成した証明書をインポート。
  5. Excelの「ファイル」→「オプション」→「セキュリティセンター」→「セキュリティセンターの設定」→「信頼できる発行元」を確認。
  6. 表示されていなければ次へ進む。

5. インポートだけでは証明書を認識しない場合、証明書をエクスポートする

  1. 「個人」→「証明書」から自己署名証明書をエクスポート(秘密キーはエクスポートしない)。

6. Windows PowerShellで証明書を認識させる

  1. Windows PowerShellを管理者権限で起動。
  2. 以下のスクリプトを実行:
$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ファイルを複数人で利用することが可能になります。

Studio

私はこのStudioで日々の活動や、気になっている事柄を深掘りした情報を発信していきます。
経理×プログラミング + αと、方向性の全く違うことに取り組んでいます。

何事も「為せば成る」の考え方で取り組む姿をお伝えしていくので、
皆さんの気付きになれば嬉しいなと考えています。

今後ともよろしくお願いいたします。

Web制作

Step1:HTML/CSS

なぜHTML/CSSが必要なのか?
それは、どんな言語でも使うベースになるサイトの仕組みを構成だから。
header・body・footerなどを分割して記述することはあっても、
その書き方の基本は変わらないと学びました。

Step2:JavaScript

次に取り組んだのはJavaScriptです。
この言語を使う理由は、スクロールやクリック(タップ)した時に”動的”に表示を切り替えるためです。
パソコンでマウスのカーソルをdiv要素の上に置く(ホバーと言います)と色を変化させたり、
要素の大きさなどを変える動作をCSSで実装することは出来ます。

けれど、サイトの一番上から任意の場所までスクロールした時にdiv要素を表示させたい時はJavaScripを使うのが最も一般的です。