.Net / C# を介して Office ドキュメント (Excel ワークブックですが、関係ありません) の VBA コードにアクセスする必要があります。私はこれを行う方法を知っていますが、これには、Office ユーザーが Office アプリを介して VBA プロジェクト オブジェクト モデルへの信頼されたアクセスを許可している必要があります。
ユーザーが設定したままにしておくリスクがあるため、これは望ましくありません。また、アクセスが許可されていない場合、ユーザーは Office アプリを起動して設定を変更する必要があり、不快です。ユーザーのために。
.Net コードはその設定を自動的に変更できないと思いますが (これは良いことです)、ユーザーに一時的に承認を付与するかどうかを尋ねる方法はありますか? または、VBE がインストールされたときに、特に私のアプリケーションに VBE へのアクセスを許可する方法はありますか?
私の推測では、これらのどれも実現可能ではありませんが、誰かが答えを知っていれば、彼/彼女は StackOverflow にいるだろうと思いました:)
おまけの質問として、Office アプリがへのアクセスを許可しているかどうかをプログラムで確認する方法を知っている人はいますか? VBA プロジェクト オブジェクト モデル (try/catch なしで...)?
1699 次
1 に答える
5
残念ながら、セキュリティに関連するレジストリ キーを変更することで、あなたが要求していることは可能です。以下の例のように、レジストリ キーを設定し、必要なタスクを実行してから、レジストリ キーを元に戻すことができます。
Public Sub ModifyVBA()
Set wsh = CreateObject("WScript.Shell")
'key to modify
keyName = "HKEY_LOCAL_MACHINE\Software\Microsoft\Office\" & _
Application.Version & "\Excel\Security\AccessVBOM"
'enable access
wsh.RegWrite keyName, 1, "REG_DWORD"
'read the vba project name
Application.VBE.ActiveVBProject.VBComponents.Add (vbext_ct_ClassModule)
'disable access
wsh.RegDelete keyName
End Sub
(免責事項:私はもともとこれを別のフォーラムから持ち上げたと思います)。
于 2009-12-15T10:51:42.673 に答える