ReBonjour,

Histoire d'obtenir un kit exploitable pour programmer VB sur OOo, je me suis posé la question suivante :
J'ai trouvé la réponse en utilisant la page 667 du livre.
J'ai trouvé comment lancer une macro de OOo à partir de VB
et comment utiliser Xray à partir de VB.
Ce qui suit est du code VB.
rem macro appelant Xray sur l'objet oObj :
Sub VBXray(ByRef oObj As Object)
       Dim Arguinvoke1(0), Arguinvoke2(0), Arguinvoke3(0) As Object
       Arguinvoke1(0) = oObj
lancerMacroBasic("XrayTool._Main.Xray", Arguinvoke1, Arguinvoke2, Arguinvoke3)
End Sub

rem macro pour lancer un script
Sub lancerMacroBasic(ByVal nomScript As String, ByVal Arguinvoke1 As Object, ByVal Arguinvoke2 As Object, ByVal Arguinvoke3 As Object)
       Dim mspf As Object, scriptPro As Object, monScript As Object
mspf = CreateUnoService("com.sun.star.script.provider.MasterScriptProviderFactory")
       scriptPro = mspf.createScriptProvider("")
       On Error GoTo PasScript1
monScript = scriptPro.getScript("vnd.sun.star.script:" & nomScript & "?language=Basic&location=application")
       ' appel de script simple, sans arguments et sans résultat en retour
       monScript.invoke(Arguinvoke1, Arguinvoke2, Arguinvoke3)
       On Error GoTo 0
       Exit Sub

PasScript1:
       Resume PasScript2
PasScript2:
       MsgBox("Script pas trouvé : " & nomScript, 16)
   End Sub

rem macro pour charger les services:
Public Function LoadService() As Boolean
       On Error GoTo Sortie
       oServiceManager = CreateObject("com.sun.star.ServiceManager")
oDesktop = oServiceManager.createInstance("com.sun.star.frame.Desktop") oDispatcher = oServiceManager.createInstance("com.sun.star.frame.DispatchHelper") oBasicLibraries = CreateUnoService("com.sun.star.script.ApplicationScriptLibraryContainer") oDialogLibraries = CreateUnoService("com.sun.star.script.ApplicationDialogLibraryContainer")
       If oBasicLibraries.hasByname("XrayTool") Then
           oXrayTool = oBasicLibraries.getbyname("XrayTool")
           oXrayModule = oXrayTool.getbyname("_Main")
       End If
       oBasicLibraries.loadlibrary("XrayTool")
       LoadService = True
Sortie:
       LoadService = False
   End Function

Je tiens disponible un module qui contient toutes ces macros permettant de développer à partir de VB. Si cela intéresse, il pourrait être publier sur le site fr.openoffice.org ou en tant que codesnippet.

Cordialement.
Didier Dorange-Pattoret

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Répondre à