
Запуск .NET из VBA
Просто экспериментирую с различными способами загрузки CLR (.NET) сборок в VBA локально и удалённо с помощью AppDomain.ExecuteAssembly или любого другого удобного метода после обхода AccessVBOM (программный доступ к проекту Visual Basic не является доверенным) из VBA.
vba2clr.*.vba:
AccessVBOM равным 1Word.Application (может быть Excel.Application, MS PowerPoint, Access и т.д.).wordObj.Application.Run...ExecuteAssembly.clr.2.0.vba: до .NET 3.5
IDomainICRHostAppDomain.ExecuteAssembly в два отдельных массива (переменные, типы).AppDomain.ExecuteAssembly(Arg1, Arg2) (смещение в VFTable 51), где Arg1 — это «URL сборки .NET» или «локальный путь», а Arg2 — возвращаемое значение.QueryInterface, AddRef, Release.ExecuteAssembly.clr.x.vba: поддерживает .NET 2, 3.5 и 4.x
Word.Application (или Excel.Application и т.д.) приведёт к запуску дополнительного процесса WinWord.exe как дочернего процесса svchost.exe, а не основного процесса WinWord.exe.AccessVBOM изменяется/восстанавливается через COM с помощью WScript.Shell; использование win32 API может быть лучшей альтернативой.AccessVBOM; оставлю это на другой день...System.CodeDom.Compiler, можно использовать для компиляции/выполнения кода c# из VBA, см. ссылку ниже;