L'exemple ci-dessous montre comment nous pouvons exécuter un accès à une macro à partir d'une autre application ou base de données en utilisant leAutomatisation OLE.
Nous effectuons les étapes suivantes :
- créons deux bases de données Access en les appelant TestDB.mdb et TestDB2.mdb
- dans la première base de données TestDB.mdb, nous créons une macro qui l'appelle TestMsg avec l'action suivante : "Test Macro" Fenêtre de message
- dans la deuxième base de données TestDB2.mdb, nous créons une autre macro appelée TestMsg avec l'action suivante : Fenêtre de message : "Test Macro2"
- dans l'application que vous utiliserez, choisissez parmi les références Bibliothèque d'objets Microsoft Access (à partir de la version 8.0)
Créons le Sub suivant :
Sub RunMacroX() Dim objACC As New Access.Application
Set objACC = GetObject("C:TestDB.mdb") 'ouvrir la première base de données objACC.DoCmd.RunMacro ("TestMsg") 'exécuter la macro objACC.Quit Set objACC = GetObject("C:TestDB2.mdb") 'ouvrir la deuxième base de données objACC.DoCmd.RunMacro ("TestMsg") 'exécuter la macro objACC.Quit Définir objACC = Rien
End Sub
Si vous obtenez une erreur comme celle-ci : "L'action ExécuterMacro a été annulée. Erreur 2501"Ou"L'action ExécuterMacro a été annulée" .
L'erreur est due à l'existence d'une déclaration Exit Macro ou Stop Macro. Si vous constatez que, même en présence de l'erreur, la macro a terminé son activité, vous pouvez très bien utiliser leOn Error Resume Next au début de Sub.
Testé sur Office 2003 et Office 2007.