【Outlook】マクロが署名なしで実行できない時の自己署名証明書の作成

【Outlook】マクロが署名なしで実行できない時の自己署名証明書の作成
🛡️ 超解決

Outlookでマクロを実行しようとすると、「署名なしのマクロは実行できません」というエラーが表示されることがあります。この問題は、マクロにデジタル署名がないためにセキュリティ設定でブロックされるためです。自己署名証明書を作成してマクロに署名することで、このエラーを回避できます。本記事では、自己署名証明書の作成手順と注意点を詳しく解説します。

【要点】自己署名証明書でOutlookマクロを実行可能にする方法

  • 自己署名証明書の作成: PowerShellのNew-SelfSignedCertificateコマンドで証明書を作成します。
  • 証明書のインストール: 作成した証明書を「信頼されたルート証明機関」ストアにインストールします。
  • マクロへの署名: Microsoft Visual Basic for Applicationsのデジタル署名機能でマクロプロジェクトに署名します。
  • 注意点: 証明書は作成したPCでのみ有効で、配布には追加の手順が必要です。

ADVERTISEMENT

なぜマクロが署名なしで実行できないのか

Outlookを含むMicrosoft Officeアプリケーションは、マクロの実行をセキュリティで保護しています。デフォルトの設定では、信頼できる発行元のデジタル署名がないマクロは無効化されます。この背景には、悪意のあるコードの実行を防ぐ目的があります。デジタル署名は、マクロの作成者を証明し、改ざんがないことを保証します。

自己署名証明書は、自分自身で作成した証明書です。商用の証明書認証局(CA)が発行するものではないため、他のPCでは信頼されません。しかし、自分のPC上でテストする場合や、組織内でグループポリシーなどを通じて配布する場合に便利です。たとえば、OutlookのVBAプロジェクトで「参照設定」の変更が必要なマクロを作成した際、署名がないと毎回セキュリティ警告が表示されます。自己署名証明書を使用すれば、その警告を回避できます。

お探しの解決策が見つからない場合は、こちらの「Teams/Outlookトラブル完全解決データベース」で他のエラー原因や解決策をチェックしてみてください。

自己署名証明書の作成とマクロ署名の手順

以下では、自己署名証明書を作成し、Outlookのマクロに署名する手順を説明します。この手順はWindows 10/11、Microsoft 365のOutlookで動作確認しています。関連サービスとして、Exchange OnlineやSharePointのマクロにも応用できます。

  1. PowerShellを管理者として開く
    Windowsの検索バーで「PowerShell」と入力し、右クリックから「管理者として実行」を選択します。
  2. 自己署名証明書を作成するコマンドを実行
    以下のコマンドを入力してEnterキーを押します。
    New-SelfSignedCertificate -Subject "CN=MyMacroCert" -CertStoreLocation "Cert:\CurrentUser\My" -Type CodeSigning
    これにより、コード署名用の証明書が現在のユーザーの個人ストアに作成されます。
  3. 証明書の拇印(Thumbprint)を確認
    以下のコマンドで作成した証明書の拇印を表示します。
    Get-ChildItem -Path Cert:\CurrentUser\My | Where-Object {$_.Subject -like "*MyMacroCert*"} | Select-Object Thumbprint
    拇印は後で証明書をエクスポートする際に使用します。
  4. 証明書を信頼されたルート証明機関にインストール
    証明書マネージャー(certmgr.msc)を開き、「個人」フォルダ内の証明書を「信頼されたルート証明機関」フォルダにコピーします。これにより、自分のPCで証明書が信頼されるようになります。
  5. Outlookでマクロを開き、署名する
    Outlookを起動し、Alt+F11でVBAエディターを開きます。メニューから「ツール」→「デジタル署名」を選択し、表示された証明書を選んで「OK」をクリックします。マクロプロジェクトが保存され、署名が適用されます。
  6. Outlookのマクロセキュリティ設定を確認
    「ファイル」→「オプション」→「セキュリティセンター」→「マクロの設定」で「署名されたマクロのみを有効にする」にチェックが入っていることを確認します。これで署名済みマクロが実行できます。

注意点とよくある失敗例

失敗1: 証明書を間違ったストアにインストールする

証明書は「信頼されたルート証明機関」ストアにインストールする必要があります。個人ストアにのみインストールしても、Outlookは証明書を信頼しません。例として、certmgr.mscで「個人」フォルダに証明書を置いたままにすると、マクロ実行時に「このマクロは署名されていますが、発行元が信頼されていません」というメッセージが表示されます。

失敗2: 証明書の種類を間違える

New-SelfSignedCertificateコマンドで-Type CodeSigningを指定しないと、コード署名に使えない証明書が作成されます。たとえば、-Type SSLServerWebAuthenticationのような別の種類を指定すると、マクロへの署名は失敗します。必ず-Type CodeSigningにしてください。

失敗3: Outlookを再起動しない

証明書のインストール後、Outlookを再起動しないと変更が反映されません。また、マクロに署名した後も一度Outlookを閉じて再度開く必要があります。これを怠ると、以前のセキュリティ設定がキャッシュされているため、エラーが解消されないことがあります。

ADVERTISEMENT

自己署名証明書と商用証明書の比較

項目 自己署名証明書 商用証明書
コスト 無料で作成可能 年間数千円〜数万円
信頼性 自分自身のPCのみ信頼される すべてのPCで信頼される
配布の容易さ 各PCに手動インストールが必要 証明書を一度インストールするだけ

よくある質問

Q1: 自己署名証明書を他のPCで使うにはどうすればよいですか?

証明書をエクスポートして、他のPCの「信頼されたルート証明機関」にインポートします。PowerShellでExport-Certificateコマンドを使用して.cerファイルに出力し、それを他のPCでインポートします。ただし、この方法は組織内の限定的な配布に適しています。広く配布する場合は、グループポリシーやMicrosoft Intuneを利用すると効率的です。

Q2: 証明書の有効期限はどのくらいですか?

New-SelfSignedCertificateで作成した証明書の既定の有効期限は1年です。-NotAfterパラメータを使用して期間を変更できます。たとえば、-NotAfter (Get-Date).AddYears(5)とすると5年間有効になります。期限が切れた場合は再度署名が必要です。

Q3: 証明書を削除する方法は?

certmgr.mscを開き、「個人」または「信頼されたルート証明機関」フォルダから該当の証明書を選択して削除します。また、PowerShellでRemove-Item -Path Cert:\CurrentUser\My\ -DeleteKeyと実行しても削除できます。削除後は、その証明書で署名したマクロは再び信頼されなくなります。

まとめ

自己署名証明書を利用することで、Outlookでマクロが署名なしで実行できない問題を解決できます。PowerShellで証明書を作成し、信頼されたルート証明機関にインストールして、VBAエディターからマクロに署名する手順は簡単です。ただし、自己署名証明書は自分のPCでのみ有効なため、他のユーザーとマクロを共有する場合は商用証明書の購入を検討してください。また、セキュリティ設定を適切に行い、過度に緩めないように注意しましょう。


👥
Teams/Outlookトラブル完全解決データベース サインイン、接続エラー、メール送受信の不具合など、特有のトラブル解決策を網羅。困った時の逆引きに活用してください。

ADVERTISEMENT

この記事の監修者
🌐

超解決 リモートワーク研究班

Microsoft 365の導入・保守を専門とするエンジニアグループ。通信障害やサインイン不具合など、ビジネスインフラのトラブル対応に精通しています。

SPONSORED