
Ejecutando .NET desde VBA
Solo experimentando con diferentes formas de cargar ensamblados CLR (.NET) en VBA local y remotamente usando AppDomain.ExecuteAssembly o cualquier otro método útil después de sortear AccessVBOM (el acceso programático al proyecto de Visual Basic no es de confianza) desde VBA.
vba2clr.*.vba:
AccessVBOM a 1Word.Application. (podría ser Excel.Application, MS PowerPoint, Access, etc.).ExecuteAssembly.vba codificado en b64/hex)ExecuteAssembly.vba usando wordObj.Application.Run...ExecuteAssembly.clr.2.0.vba: Hasta .NET 3.5
IDomain, ICRHost)AppDomain.ExecuteAssembly en dos matrices separadas (variables, tipos).AppDomain.ExecuteAssembly(Arg1, Arg2) (desplazamiento 51 del VFTable) donde Arg1 es la "URL del ensamblado .NET" o "ruta local" y Arg2 es el valor de retorno.QueryInterface, AddRef, Release.ExecuteAssembly.clr.x.vba: soporta .NET 2, 3.5 y 4.x
Word.Application (o Excel.Application, etc.), dará como resultado el inicio de un WinWord.exe adicional como proceso hijo de svchost.exe en lugar del proceso principal WinWord.exe.AccessVBOM se modifica/restaura mediante COM usando WScript.Shell; usar APIs de win32 podría ser una mejor alternativa.AccessVBOM; lo dejaré para otro día...System.CodeDom.Compiler se pueden usar para compilar/ejecutar código c# desde VBA; consulta la referencia a continuación;