
Running .NET from VBA
Juste pour expérimenter différentes façons de charger des assemblys CLR (.NET) en VBA, localement et à distance, en utilisant AppDomain.ExecuteAssembly ou toute autre méthode pratique après avoir contourné AccessVBOM (l'accès programmatique au projet Visual Basic n'est pas approuvé) depuis VBA.
vba2clr.*.vba:
AccessVBOM à 1Word.Application. (pourrait être Excel.Application, MS PowerPoint, Access, etc.).wordObj.Application.Run...ExecuteAssembly.clr.2.0.vba: Jusqu'à .NET 3.5
IDomain, ICRHost)AppDomain.ExecuteAssembly dans deux tableaux séparés (variables, types).AppDomain.ExecuteAssembly(Arg1, Arg2) (offset VFTable 51) où Arg1 est « l'URL de l'assembly .NET » ou « le chemin local » et Arg2 est la valeur de retour.QueryInterface, AddRef, Release.ExecuteAssembly.clr.x.vba: prend en charge .NET 2, 3.5 et 4.x
Word.Application (ou Excel.Application, etc.) entraîne le lancement d'un WinWord.exe supplémentaire comme processus enfant de svchost.exe au lieu du processus WinWord.exe principal.AccessVBOM est modifiée/restaurée via COM en utilisant WScript.Shell ; l'utilisation des API win32 pourrait être une meilleure alternative.AccessVBOM ; je laisserai cela pour un autre jour...System.CodeDom.Compiler peuvent être utilisées pour compiler/exécuter du code c# depuis VBA, voir la référence ci-dessous ;