Bonjour,
Mon problème est compliqué c pourquoi mon titre n'est pas tres clair :
je dois faire un changement de type de documents writer ooo (sxw => odt) avec una appli java sans que ooo ne s'affiche.
Je travaille donc sur une macro qui ouvre ooo en mode "hidden" comme dans l'exemple de la faq ooo.developpez.com/faq.
Cependant, il existe 2 méthodes ensuite pour changer le type de doc :
la première en utilisant la macro suivante :
Le problème c qu'avec :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37 dim strFile as String dim document as object dim dispatcher as object dim adresseDoc as String dim args(0) as new com.sun.star.beans.PropertyValue dim args2(2) as new com.sun.star.beans.PropertyValue 'Arguments Open Office pour masquer le fichier args(0).Name = "Hidden" 'nom de l'argument args(0).Value = True 'valeur de l'argument strFile = "C:\test.sxw" adresseDoc = convertToURL(strFile)'adresse du document à modifier 'on charge le document document = StarDesktop.LoadComponentFromURL(adresseDoc, "_blank", 0, args()) 'on cree l'adresse en .odt adresseDoc = convertToURL(left(strFile, len(strFile)-3) + "odt") 'on recupère le document en cours document = ThisComponent.CurrentController.Frame dispatcher = createUnoService("com.sun.star.frame.DispatchHelper") 'arguments pour enregister le doc en .odt args2(0).Name = "URL" args2(0).Value = adresseDoc args2(1).Name = "FilterName" args2(1).Value = "writer8" args2(2).Name = "SelectionOnly" args2(2).Value = true dispatcher.executeDispatch(document, ".uno:SaveAs", "", 0, args2()) On Error Resume Next document.Close(True) ' fermeture du document en cours On Error Goto 0 end sub
"document = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")"
, je prend le document affiché alors qu'il ne l'ai pas.
deuxième méthode, j'utilise ceci :
"document.storeAsURL(adresseDoc, args2())"
à la place mais j'ai alors un bug etrange :
"Runtime error BASIC.
Une exception s'est produite :
Type : com.sun.star.task.ErrorCodeIOException"
Est-ce que qu'il y a une solution pour faire ce que je veux sans que ooo ne s'affiche tout en evitant le code qui plante ?
Merci pour votre aide si précieuse.
Partager