Urgent open office macro VB

Signaler
Messages postés
39
Date d'inscription
jeudi 10 avril 2003
Statut
Membre
Dernière intervention
4 juin 2014
-
Messages postés
1
Date d'inscription
jeudi 29 janvier 2009
Statut
Membre
Dernière intervention
24 mars 2009
-
Bonjour,

Je fabrique un soft qui utilise word et doit utiliser writer à la demande de certain de mes clients.

Voici ma question: y a t'il quelqu'un qui à dèjà fait un appel de macro dans openoffice2 a
partir de VB avec ou sans arguements avez vous des exemples qui
fonctionnent ?

Par avance merci.

5 réponses

Messages postés
402
Date d'inscription
vendredi 6 août 2004
Statut
Membre
Dernière intervention
12 octobre 2008
26
bonjour

j'espere que ce lien pourra t'aider

http://www.kalitech.fr/clients/doc/VB_APIOOo_en.html

cordialement
michel
Messages postés
39
Date d'inscription
jeudi 10 avril 2003
Statut
Membre
Dernière intervention
4 juin 2014

Merci de ta réponse rapide.

Je connaissais le lien, je n'apprends rien de plus.

Mon code ne me donne pas d'erreur mais pas de reéaction à ma macro alors qu'elle est bonne.



' changement des \ en /

Compteur = 1

StrTemp = "file:///"

Ligne = CheminFichier + NomFichier

While Compteur <> Len(Ligne) + 1

If Mid(Ligne, Compteur, 1) <> "" Then


StrTemp = StrTemp + Mid(Ligne, Compteur, 1)

Else

StrTemp = StrTemp + "/"

End If

Compteur = Compteur + 1

Wend

' ouverture du document

Set OODocument = OODesktop.LoadComponentFromURL(StrTemp, "_blank", 0, Args)



Err = 0

Dim dispatcher As Object

Set dispatcher = OOServiceManager.createInstance("com.sun.star.frame.DispatchHelper")

Set Frame = OODocument.getCurrentController().getFrame()



' fonction qui normalement permet
d'executer la macro qui est dans OO

Err = 0

Call
dispatcher.executeDispatch(Frame,
"macro:///Standard.Module1.HautDocument", "", 0, Args)

Debug.Print Err
Messages postés
402
Date d'inscription
vendredi 6 août 2004
Statut
Membre
Dernière intervention
12 octobre 2008
26
rebonjour

tu peux tester cette adaptation

Private Sub Command1_Click()
Dim Args()
Dim OOdocument As Object, ServiceManager As Object
Dim OOdesktop As Object


Set ServiceManager = CreateObject("com.sun.star.ServiceManager")
Set OOdesktop = ServiceManager.createInstance("com.sun.star.frame.Desktop")


' changement des \ en /
Compteur = 1
StrTemp = "[file:/// file:///]"
Ligne = "C:\Documents and Settings\michel\monDocument.sxw"

While Compteur <> Len(Ligne) + 1
If Mid(Ligne, Compteur, 1) <> "" Then
StrTemp = StrTemp + Mid(Ligne, Compteur, 1)
Else
StrTemp = StrTemp + "/"
End If
Compteur = Compteur + 1
Wend
' ouverture du document

Set OOdocument = OOdesktop.loadComponentFromURL(StrTemp, "_blank", 0, Args)
End Sub

tu trouveras dans ce lien d'autres exemples pour piloter Open Office depuis Excel . tu pourras facilement les adapter en VB

http://www.excel-downloads.com/html/French/phpwiki/index.php?pagename=MichelXldsuite
(voir le chapitre "Piloter Open Office à partir d'Excel" en milieu de page)

bon apres midi
michel
Messages postés
39
Date d'inscription
jeudi 10 avril 2003
Statut
Membre
Dernière intervention
4 juin 2014

Merci Michel,



pour les exemples d'excel, il y a pas mal d'idées dont je vais avoir besoin pour la suite de mon developpement.



En revenche je ne voit toujours pas comment utiliser, a partir de VB, des macros enregistrés sous OO.



Après de multiple recherche sur le net français et englais je n'est rien trouver de valable(qui fonctionne).



Par avance merci
Messages postés
1
Date d'inscription
jeudi 29 janvier 2009
Statut
Membre
Dernière intervention
24 mars 2009

slt dans kel parti de mon code vba  je peu utiliser votre bout de code
Private Sub Command1_Click()
Dim Args()
Dim OOdocument As Object, ServiceManager As Object
Dim OOdesktop As Object
Set ServiceManager = CreateObject("com.sun.star.ServiceManager")
Set OOdesktop = ServiceManager.createInstance("com.sun.star.frame.Desktop")

' changement des \ en /
     Compteur = 1
        StrTemp = "[http://www.vbfrance.com/c.aspx?u=ZmlsZTovLy8= [ Lien ]]

"
        Ligne = "C:\Documents and Settings\michel\monDocument.sxw"
      
        While Compteur <> Len(Ligne) + 1
            If Mid(Ligne, Compteur, 1) <> "" Then
                StrTemp = StrTemp + Mid(Ligne, Compteur, 1)
            Else
                StrTemp = StrTemp + "/"
            End If
            Compteur = Compteur + 1
        Wend
        ' ouverture du document
       
        Set OOdocument = OOdesktop.loadComponentFromURL(StrTemp, "_blank", 0, Args)
End Sub