COM自動化を介してMS-Word2007ドキュメントをロードする単純なC#Winformsアプリケーションを開発しました。
これはすべて非常に単純で簡単ですが、ドキュメントに応じて、プログラムでマクロとActiveXコントロールを有効または無効にする必要があります。
これをレジストリに保存する方法はおそらくありますが、一度に複数の同時リクエストが実行される可能性があるため、インスタンスごとにこれらの設定を制御したいと思います。
だから私の質問は「COM自動化を使用してトラストセンターの設定を構成するにはどうすればよいですか」です。
私は何時間もグーグルで検索しましたが、見つけることができたのはApplication.AutomationSecurityプロパティだけですが、これは次の値のみを受け入れます。
- MsoAutomationSecurity.msoAutomationSecurityLow
- MsoAutomationSecurity.msoAutomationSecurityForceDisable
- MsoAutomationSecurity.msoAutomationSecurityByUI
ただし、Word 2007 Trust Centerは、次の設定を公開します。
マクロ設定:
- 通知なしですべてのマクロを無効にします(msoAutomationSecurityForceDisableと一致します)
- 通知付きのすべてのマクロを無効にします(これは必要ありません)
- デジタル署名されたマクロを除くすべてのマクロを無効にします(同等のものはありません)
- すべてのマクロを有効にします(msoAutomationSecurityLowと一致します)
(出典:visguy.com)
ActiveXコントロール(個別に構成されています。これらを制御する方法は見つかりませんでした。スクリーンショットによると、これらの設定はすべてのアプリケーション間で共有されていることに注意してください)
- 通知なしにすべてのコントロールを無効にする
- UFIコントロールを有効にする前にプロンプトを表示します。
- 最小限の制限ですべてのコントロールを有効にする前にプロンプトを表示する
- 制限なしですべてのコントロールを有効にする
これらの設定を変更しながらMS-Wordマクロを記録するという古いトリックを試しましたが、これらの手順はいずれも記録されません。
更新: レジストリのActiveXコントロール設定に次のエントリが見つかりました。ActiveX設定は確かにグローバルであり、誰かが私を間違っていると証明しない限り、単一のMS-Wordインスタンスに指定することはできません。
ActiveX無効
[HKEY_CURRENT_USER \ Software \ Microsoft \ Office \ Common \ Security] "DisableAllActiveX" = dword:00000001 "UFIControls" = dword:00000002
セーフモードでActiveXを有効にする
[HKEY_CURRENT_USER \ Software \ Microsoft \ Office \ Common \ Security] "DisableAllActiveX" = dword:00000000 "UFIControls" = dword:00000002
セーフモードなしでActiveXが有効
[HKEY_CURRENT_USER \ Software \ Microsoft \ Office \ Common \ Security] "DisableAllActiveX" = dword:00000000 "UFIControls" = dword:00000001
マクロ設定の問題を解決することにまだ熱心です