
Exécuter .NET depuis 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.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 ;ExecuteAssembly.clr.x.vba: prend en charge .NET 2, 3.5 et 4.x