Bonjour à tous,
je cherche un moyen pour lancer une macro Open Office depuis du code VB, cette macro attendant des arguments en entrée.
voilà le code que j'utilise pour lancer une macro depuis VB
Ce code fonctionne pour une macro qui n'a pas de paramètre d'entrée.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 'ouverture du fichier Set oServiceManager = CreateObject("com.sun.star.serviceManager") Set oDesktop = oServiceManager.createInstance("com.sun.star.frame.Desktop") Set oDispatcher = oServiceManager.createInstance("com.sun.star.frame.DispatchHelper") Set args(0) = oServiceManager.Bridge_GetStruct("com.sun.star.beans.PropertyValue") args(0).Name = "MacroExecutionMode" args(0).value = 4 Set DocumentODS = oDesktop.loadComponentFromURL(url, "_blank", 0, args) 'appel de la macro Set oFrame = DocumentODS.getCurrentController().getFrame() Call oDispatcher.executeDispatch(oFrame, "macro:///Standard.Module1.MaMacro", "", 0, args)
Maintenant j'essaie de passer un argument à la macro de la façon suivante :
avec :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 Dim args2(0) Set args2(0) = MakePropertyValue("nomFeuilleSrc", "Feuille1", oServiceManager) Call oDispatcher.executeDispatch(oFrame, "macro:///Standard.Module1.MaMacro", "", 0, args2)
Ce code marche en vb (pas de plantage), par contre ma macro ne récupère pas la valeur passée et plante. Je ne sais pas si c'est la syntaxe vb que j'utilise qui n'est pas bonne ou si c'est l'utilisation dans ma macro Oo qui n'est pas correcte.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 Function MakePropertyValue(cName, uValue, objServiceManager) Dim oStruct Set oStruct = objServiceManager.Bridge_GetStruct("com.sun.star.beans.PropertyValue") oStruct.Name = cName oStruct.value = uValue Set MakePropertyValue = oStruct End Function
D'avance merci à ceux qui pourront m'aider.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 'macro Open Office Sub MaMacro(nomFeuilleSrc as String) oDoc = ThisComponent oSheet = oDoc.sheets.getbyname (nomFeuilleSrc) 'plantage ici : "Erreur blablabla... Argument non facultatif" .... End Sub![]()
Partager