Outlookでマクロを実行しようとすると、「署名なしのマクロは実行できません」というエラーが表示されることがあります。この問題は、マクロにデジタル署名がないためにセキュリティ設定でブロックされるためです。自己署名証明書を作成してマクロに署名することで、このエラーを回避できます。本記事では、自己署名証明書の作成手順と注意点を詳しく解説します。
【要点】自己署名証明書でOutlookマクロを実行可能にする方法
- 自己署名証明書の作成: PowerShellのNew-SelfSignedCertificateコマンドで証明書を作成します。
- 証明書のインストール: 作成した証明書を「信頼されたルート証明機関」ストアにインストールします。
- マクロへの署名: Microsoft Visual Basic for Applicationsのデジタル署名機能でマクロプロジェクトに署名します。
- 注意点: 証明書は作成したPCでのみ有効で、配布には追加の手順が必要です。
ADVERTISEMENT
目次
なぜマクロが署名なしで実行できないのか
Outlookを含むMicrosoft Officeアプリケーションは、マクロの実行をセキュリティで保護しています。デフォルトの設定では、信頼できる発行元のデジタル署名がないマクロは無効化されます。この背景には、悪意のあるコードの実行を防ぐ目的があります。デジタル署名は、マクロの作成者を証明し、改ざんがないことを保証します。
自己署名証明書は、自分自身で作成した証明書です。商用の証明書認証局(CA)が発行するものではないため、他のPCでは信頼されません。しかし、自分のPC上でテストする場合や、組織内でグループポリシーなどを通じて配布する場合に便利です。たとえば、OutlookのVBAプロジェクトで「参照設定」の変更が必要なマクロを作成した際、署名がないと毎回セキュリティ警告が表示されます。自己署名証明書を使用すれば、その警告を回避できます。
自己署名証明書の作成とマクロ署名の手順
以下では、自己署名証明書を作成し、Outlookのマクロに署名する手順を説明します。この手順はWindows 10/11、Microsoft 365のOutlookで動作確認しています。関連サービスとして、Exchange OnlineやSharePointのマクロにも応用できます。
- PowerShellを管理者として開く
Windowsの検索バーで「PowerShell」と入力し、右クリックから「管理者として実行」を選択します。 - 自己署名証明書を作成するコマンドを実行
以下のコマンドを入力してEnterキーを押します。New-SelfSignedCertificate -Subject "CN=MyMacroCert" -CertStoreLocation "Cert:\CurrentUser\My" -Type CodeSigning
これにより、コード署名用の証明書が現在のユーザーの個人ストアに作成されます。 - 証明書の拇印(Thumbprint)を確認
以下のコマンドで作成した証明書の拇印を表示します。Get-ChildItem -Path Cert:\CurrentUser\My | Where-Object {$_.Subject -like "*MyMacroCert*"} | Select-Object Thumbprint
拇印は後で証明書をエクスポートする際に使用します。 - 証明書を信頼されたルート証明機関にインストール
証明書マネージャー(certmgr.msc)を開き、「個人」フォルダ内の証明書を「信頼されたルート証明機関」フォルダにコピーします。これにより、自分のPCで証明書が信頼されるようになります。 - Outlookでマクロを開き、署名する
Outlookを起動し、Alt+F11でVBAエディターを開きます。メニューから「ツール」→「デジタル署名」を選択し、表示された証明書を選んで「OK」をクリックします。マクロプロジェクトが保存され、署名が適用されます。 - 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\
まとめ
自己署名証明書を利用することで、Outlookでマクロが署名なしで実行できない問題を解決できます。PowerShellで証明書を作成し、信頼されたルート証明機関にインストールして、VBAエディターからマクロに署名する手順は簡単です。ただし、自己署名証明書は自分のPCでのみ有効なため、他のユーザーとマクロを共有する場合は商用証明書の購入を検討してください。また、セキュリティ設定を適切に行い、過度に緩めないように注意しましょう。
ADVERTISEMENT
超解決 リモートワーク研究班
Microsoft 365の導入・保守を専門とするエンジニアグループ。通信障害やサインイン不具合など、ビジネスインフラのトラブル対応に精通しています。
SPONSORED
Office・仕事術の人気記事ランキング
- 【Word】差し込み印刷で数字の桁を整える!金額にカンマ(桁区切り)を入れる設定
- 【Teams】メッセージを「保存済み」にして後で読む!重要なチャットをブックマークして整理する技
- 【PDF】PDFのサムネイルプレビューが表示されない!エクスプローラーの設定とAcrobat環境設定
- 【Copilot】「サービスに接続できません」エラーの原因切り分けと対処法
- 【Excel】文字がセルの枠からはみ出す・隠れる!「折り返して表示」と「縮小して全体を表示」の使い分け
- 【PDF】PDFに入力した文字の「フォント・サイズ・色」を変更するプロパティ設定
- 【Word】校閲機能の基本!赤字(変更履歴)とコメントで修正を見える化する
- 【Outlook】宛先が「オートコンプリート」に出ない・間違っている時の修正手順|履歴の削除と再構築
- 【Teams】「Microsoft Teams の読み込み中に問題が発生しました」画面がループする時の修復手順
- 【Outlook】添付ファイルが「Winmail.dat」に化ける!受信側が困らない送信設定
