現象
次のような状況で問題が発生します。
- Microsoft Access は、Microsoft Access セキュリティ センターの設定でデジタル署名されたマクロを除くすべてのマクロを無効にするように構成されています。
- 信頼されたフォルダーの場所の外部でデジタル署名されたデータベースを開きます。
このシナリオでは、データベースに適用されている デジタル署名 が無効になっていることを示す次のメッセージの 1 つ以上を受け取る場合があります。
- データベースまたはプロジェクトを変更すると、関連付けられているデジタル署名が無効になります。 次にデータベースまたはプロジェクトを開く際に、信頼の決定が必要になる場合があります。
- このファイル内のアクティブなコンテンツはブロックされます。 セキュリティ センターの設定を確認するか、IT 管理者に問い合わせてください。
- 一部のアクティブなコンテンツが無効になっています
- 警告: コンテンツが署名された後、デジタル署名が改ざんされました。 このコンテンツは信頼できません。
原因
次のデータベース使用シナリオは、デジタル署名を無効にすることがわかっています。
- フォーム、レポート、マクロ、またはモジュールをインポート、変更、または作成する
- アクション クエリをインポート、変更、または作成する
- パススルー クエリをインポート、変更、または作成する
- Visual Basic for Applications (VBA) 参照を追加、変更、または削除する
- ActiveX コントロールを含むデータベースを、デジタル署名が適用される場所とは異なるビット バージョンの Microsoft 365 を使用するコンピューターに配布します
- [ 名前のオートコレクトの実行 ] オプションが有効になっており、保留中の名前の修正があります
- デジタル署名が適用された後、[ トラック名のオートコレクト情報 ] オプションが有効になる
回避策
この問題を回避するには、適切なシナリオのオプションを選択します。
アクション クエリとパススルー クエリ
VBA コードを使用すると、デジタル署名を無効にすることなく、Access でアクション クエリとパススルー クエリを作成、変更、または削除できます。 これは、オブジェクトに対する変更が同じデータベース セッションで元に戻される限り、当てはまります。
たとえば、次のシナリオではデジタル署名は無効になりません。
-
CreateQueryDef メソッドを使用して、新しい名前付きパススルー クエリを作成します。 データベースを閉じる前に、 メソッドを使用してパススルー クエリを
QueryDefs.Delete
削除します。 -
QueryDefs コレクションを使用して、名前付きパススルー クエリを検索し、プロパティを編集します
QueryDef.SQL
。 データベースを閉じる前に、プロパティを元のQueryDef.SQL
値に戻します。 - アクション クエリまたはパススルー クエリを作成して実行するには、一時的な QueryDef オブジェクトを使用します。
[名前のオートコレクトの実行] オプションが有効になっている
デジタル署名を適用する前に、保留中の名前の修正がないことを確認します。 これを行うには、保留中の変更を含む可能性があるオブジェクトを開いて保存します。
メモ: オブジェクトが多いデータベースの場合は、コード ループを使用してこのタスクを実行することを検討してください。
デジタル署名が適用された後、[トラック名のオートコレクト情報] オプションが有効になる
デジタル署名を適用する前に、[ トラック名のオートコレクト情報 ] オプションを有効にします。
デジタル署名を無効にできるその他のシナリオの場合
フロントエンド データベースにデジタル署名が適用されている分割データベースの使用を検討してください。 使用するたびに、バッチ ファイルまたはその他のスクリプトを使用して、フロントエンド データベースを新しいコピーに置き換えます。