
Running .NET von VBA aus
Ich experimentiere gerade mit verschiedenen Möglichkeiten, CLR-Assemblies (.NET) in VBA lokal und remote zu laden, indem ich AppDomain.ExecuteAssembly oder eine andere praktische Methode verwende, nachdem ich von VBA aus AccessVBOM umgangen habe (der programmatische Zugriff auf das Visual-Basic-Projekt ist nicht vertrauenswürdig).
vba2clr.*.vba:
AccessVBOM-Registrierungsschlüssel auf 1Word.Application-COM-Objekt (könnte Excel.Application, MS PowerPoint, Access usw. sein).wordObj.Application.Run... ausExecuteAssembly.clr.2.0.vba: Bis zu .NET 3.5
IDomain, ICRHost)AppDomain.ExecuteAssembly-Argumente in zwei separate Arrays (Variablen, Typen).AppDomain.ExecuteAssembly(Arg1, Arg2) aufzurufen (VFTable-Offset 51), wobei Arg1 die „.NET Assembly URL" oder der „Local Path" ist und Arg2 den Rückgabewert darstellt.QueryInterface, AddRef, Release gesetzt haben.Word.Application (oder Excel.Application usw.) führt dazu, dass ein zusätzlicher WinWord.exe-Prozess als untergeordneter Prozess von svchost.exe erzeugt wird, anstatt des Hauptprozesses WinWord.exe.AccessVBOM-Registrierungsschlüssel wird über COM mithilfe von WScript.Shell geändert/wiederhergestellt; die Verwendung von Win32-APIs könnte eine bessere Alternative sein.AccessVBOM-Registrierungsschlüssels; das hebe ich mir für einen anderen Tag auf ...System.CodeDom.Compiler können verwendet werden, um C#-Code aus VBA zu kompilieren/auszuführen; siehe Referenz unten;ExecuteAssembly.clr.x.vba: unterstützt .NET 2, 3.5 und 4.x