---Soumis par Dev Ashish---
Exécuter une macro d'Excel par automation.
Tout d'abord, le code.
'************* Code Start **************** ' Sub sRunCARMa() Dim objXL As Object, x On Error Resume Next Set objXL = CreateObject("Excel.Application") With objXL.Application .Visible = True 'Ouvrir le livret .Workbooks.Open "D:\CARM\SYS\CARMaV5\CARMaV5a.XLS" 'Inclure CARMA dans le menu, exécuter AutoOpen .ActiveWorkbook.RunAutoMacros xlAutoOpen x = .Run("AccountsViewEngine", 0) End With Set objXL = Nothing End Sub '************* Code End ****************
Comme vous le constatez, j'utilise CreateObject pour démarrer une instance d'Excel. Vous pouvez cependant utiliser fIsAppRunning pour alors choisir d'utiliser GetObject, si c'est plus opportun.
CreateObject démarre par défaut une nouvelle instance de l'application en mode caché. Dans notre cas, nous désirons la rendre visible.
Après avoir ouvert le livret qui nous intéresse, on utilisa RunAutoMacros pour démarrer la macro AutoOpen.
Noter que si vous désirez que Access reconnaisse les constantes d'Excel, tel que xlAutoOpen, il faut préalablement demander une référence à Excel Object Library (Menu, Tools , References...).
On utilise la méthode Application.Run pour exécuter n'importe quelle macro. La syntaxe est simplement:
Run(Macro, Arg1, Arg2, ...)
et AccountsViewEngine s'attend à recevoir un argument booléen, ici, 0 pour Faux.