メイン コンテンツへスキップ
サポート
Microsoft アカウントでサインイン
サインインまたはアカウントを作成してください。
こんにちは、
別のアカウントを選択してください。
複数のアカウントがあります
サインインに使用するアカウントを選択してください。

この記事では、 証明書を使用して Windows で マクロ プロジェクトにデジタル署名する方法について説明します。 デジタル証明書をまだ持っていない場合は、デジタル証明書を取得する必要があります。

ヒント: 独自のコンピューターでマクロ プロジェクトを使用またはテストするには、Selfcert.exe ツールを使用して独自の自己署名証明書を作成できます。 詳細については、以下をご覧ください。

デジタル証明書を取得する

デジタル証明書は、商用証明機関 (CA)、内部セキュリティ管理者、または情報技術 (IT) プロフェッショナルから取得できます。

Microsoft 製品のサービスを提供する証明機関の詳細については、Microsoft ルート証明書プログラムのメンバーの一覧を参照してください。

ユーザーが作成するデジタル証明書は、正式な信頼できる証明機関から発行されるものではないため、そのような証明を使って署名されたマクロ プロジェクトは自己署名のプロジェクトと呼ばれます。 Microsoft Office で自己署名証明書が信頼されるのは、自己署名証明書がコンピューターの [証明書 - 現在のユーザー] ストアの [信頼されたルート証明機関] に追加されている場合のみです。 これにより、自分のマシンや管理するごく少数のマシンでテストまたは使用するのに適していますが、マクロ プロジェクトを他のユーザーに配布する場合には適していません。

自己署名入りデジタル証明書を作成する

  1. C:\Program Files (x86)\Microsoft Office\root\Office16 に移動します。

    ヒント: このフォルダーに見つからない場合は、C:\Program Files\Microsoft Office\root\Office16 をお試しください

  2. SelfCert.exe をクリックします。 [デジタル証明書の作成] ボックスが表示されます。

  3. [証明書の名前] ボックスに、証明書のわかりやすい名前を入力します。

  4. [OK] をクリックします。

  5. [SelfCert 成功] というメッセージが表示されたら、[OK] をクリックします。

  1. C:\Program Files\Microsoft Office\<Office のバージョン>\ に移動します。

  2. SelfCert.exe をクリックします。 [デジタル証明書の作成] ボックスが表示されます。

  3. [証明書の名前] ボックスに、証明書のわかりやすい名前を入力します。

  4. [OK] をクリックします。

  5. [SelfCert 成功] というメッセージが表示されたら、[OK] をクリックします。

個人用証明書ストアで証明書を表示する

  1. Microsoft Edge を開きます。

  2. アドレス バー に「edge://settings/privacy 」と入力します。

  3. [ セキュリティ ] セクションまで下にスクロールし、[ 証明書の管理] を選択します。

Excel、PowerPoint、Publisher、Visio、Outlook、またはWordで VBA マクロ プロジェクトにデジタル署名する

  1. 署名するマクロ プロジェクトが含まれたファイルを開きます。

  2. [開発] タブの [コード] で [Visual Basic] をクリックします。

    注: [開発] タブが表示されていない場合は、[ファイル] タブをクリックします。 [オプション] をクリックします。 [リボンのユーザー設定] をクリックします。 [リボンのユーザー設定] の一覧で、[開発] をクリックし、[OK] をクリックします。

  3. Visual Basic で、[ツール] メニューの [デジタル署名] をクリックします。

  4. [デジタル署名] ダイアログが表示されます。

  5. 証明書を選択し、[OK] をクリックします。

    注: デジタル証明書を選択していない場合や、別のデジタル証明書を使用する場合は、[選択] をクリックします。 証明書を選択し、[OK] をクリックします。

署名にタイム スタンプを追加する

ユーザーが VBA マクロを実行すると、Office によって署名と署名された証明書がチェックされます。 署名にタイム スタンプを追加すると、証明書が失効していない限り、証明書の有効期限が切れた後でも、マクロは署名済みとして扱われます。 これにより、ユーザーの中断を減らすことができます。

期限切れになっただけの証明書は、コードの検証に引き続き使用できます。新しいコードの署名には使用できません。

タイム スタンプを追加するには、レジストリに 3 つのキーを追加する必要があります。

注意:  レジストリを誤って編集すると、システムに重大な損害を与える可能性があります。 レジストリの変更を行う前に、コンピューター上の重要なデータをバックアップしてください。

キー

タイプ

説明

HKCU\Software\Microsoft\VBA\Security\TimeStampURL

REG_SZ 

優先するタイム スタンプ サーバーの URL。 (必須)

HKCU\Software\Microsoft\VBA\Security\TimeStampRetryCount

REG_DWORD

失敗する前に Visual Basic エディターがタイム スタンプ サーバーへの接続を試行する回数。 (省略可能 - これを設定しない場合、Visual Basic エディターはサーバーへの接続を 1 回だけ試行します)

HKCU\Software\Microsoft\VBA\Security\TimeStampRetryDelay  

REG_DWORD

Visual Basic エディターがタイム スタンプ サーバーへの接続を再試行するまで待機する秒数 (ミリ秒)。 (省略可能 - これを設定しない場合、再試行の間に遅延はありません)

作業中の TimeStampURL エントリを追加すると、Visual Basic エディターは、マクロにデジタル署名するたびにタイム スタンプを自動的に追加します。

追加注記

  • ソリューションがテストされ、配布の準備ができた 、マクロに署名することをお勧めします。署名済みマクロ プロジェクトのコードが何らかの方法で変更されると、 そのデジタル署名は削除されます。 ただし、以前にコンピューターでプロジェクトの署名に使用されていた有効なデジタル証明書がある場合、マクロ プロジェクトは保存時に自動的に再署名されます。

  • ユーザーが誤ってマクロ プロジェクトを変更して署名を無効にするのを防ぐ 1 つの方法は、署名を適用する前にマクロ プロジェクトをロックすることです。 デジタル署名を使用すると、署名後にプロジェクトが改ざんされていないことが保証されますが、プロジェクトを作成したことが証明されません。 マクロ プロジェクトをロックした場合でも、別のユーザーが署名を別の署名に置き換えることができます。 また、会社の管理者は、テンプレートとアドインに再署名して、承認済みのコンテンツのみが会社のコンピューターで実行されるようにすることもできます。

  • マクロ プロジェクトにコードを追加するアドインを作成する場合、プロジェクトがデジタル署名されているかどうかを判別し、処理を続行する前に、そのユーザーに、署名されているプロジェクトを変更した場合の結果を通知できるようにしておくことが必要です。

  • 商用証明書を使用するユーザーは、署名でサポートされているハッシュ アルゴリズムが制限されているため、ブロックが発生する可能性があります。 DWORD レジストリ キー値 V1HashEnhanced を追加して、別のハッシュ アルゴリズムを選択できます。HKCU\SOFTWARE\Microsoft\VBA\Security と値アルゴリズム 規則 (1 から SHA1、SHA256 に 2、SHA384 に 3、SHA512 に 4 つ、MD5 に他)。 この設定は、CC チャネルの最新バージョンで使用できます。

詳細情報

Microsoft 365 ファイルでマクロを有効または無効にする

注: この記事は、人工知能 (AI) の助けを借りて人によって作成されました。

ヘルプを表示

その他のオプションが必要ですか?

サブスクリプションの特典の参照、トレーニング コースの閲覧、デバイスのセキュリティ保護方法などについて説明します。

コミュニティは、質問をしたり質問の答えを得たり、フィードバックを提供したり、豊富な知識を持つ専門家の意見を聞いたりするのに役立ちます。

この情報は役に立ちましたか?

言語の品質にどの程度満足していますか?
どのような要因がお客様の操作性に影響しましたか?
[送信] を押すと、Microsoft の製品とサービスの改善にフィードバックが使用されます。 IT 管理者はこのデータを収集できます。 プライバシーに関する声明。

フィードバックをいただき、ありがとうございます。

×