
Running .NET from VBA
VBA から AccessVBOM(Visual Basic プロジェクトへのプログラムによるアクセスが信頼されていない)を回避した後、AppDomain.ExecuteAssembly またはその他の便利なメソッドを使用して、CLR(.NET)アセンブリをローカルおよびリモートで VBA に読み込むさまざまな方法を試しているだけです。
vba2clr.*.vba:
AccessVBOM レジストリキーを 1 に設定します。Word.Application COMオブジェクトをインスタンス化します。(Excel.Application、MS PowerPoint、Access なども可能です)。wordObj.Application.Run... を使用して ExecuteAssembly.vba マクロを実行します。ExecuteAssembly.clr.2.0.vba: .NET 3.5 まで
IDomain、ICRHost)をインスタンス化しますAppDomain.ExecuteAssembly 引数を2つの別々の配列(変数、型)にパックしますAppDomain.ExecuteAssembly(Arg1, Arg2)(VFTable オフセット 51)を呼び出します。ここで、Arg1 は ".NET アセンブリ URL" または "ローカルパス"、Arg2 は戻り値です。QueryInterface、AddRef、Release メソッドに設定されているためです。ExecuteAssembly.clr.x.vba: .NET 2、3.5、4.x をサポートします。
Word.Application(または Excel.Application など)の COM オブジェクトを作成すると、メインの WinWord.exe プロセスの代わりに、svchost.exe の子プロセスとして追加の WinWord.exe が生成されます。AccessVBOM レジストリキーは、WScript.Shell を使用した COM 経由で変更/復元されます。win32 API を使用する方がより良い代替手段になる可能性があります。AccessVBOM レジストリキーを更新するよりも明らかに安全です。これはまたの日にします...System.CodeDom.Compiler などの他の .NET API を使用して、VBA から C# コードをコンパイル/実行できます。以下の参照を確認してください。