Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Général VBA
Général VBA Forum général VBA . Pour les logiciels spécifiques (Access, Excel, Word, ...), postez dans les bons sous forums.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 08/02/2007, 17h11   #1
Invité de passage
 
Inscription : février 2006
Messages : 18
Détails du profil
Informations forums :
Inscription : février 2006
Messages : 18
Points : 3
Points : 3
Par défaut enregistrement avc macro ds OOo en mode hidden

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 :


Code :
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
Le problème c qu'avec :
"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.
tmryuga est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/02/2007, 18h17   #2
Rédacteur
 
Homme michel Tanguy
Inscription : août 2005
Messages : 3 317
Détails du profil
Informations personnelles :
Nom : Homme michel Tanguy
Localisation : France, Isère (Rhône Alpes)

Informations professionnelles :
Secteur : Industrie

Informations forums :
Inscription : août 2005
Messages : 3 317
Points : 10 706
Points : 10 706
bonjour

tu peux essayer cette adaptation


Code :
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
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:\essai.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")
 
'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
 
document.storeAsURL(adresseDoc, args2())
document.Close(True)


bonne soirée
michel
SilkyRoad est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/02/2007, 20h15   #3
Invité de passage
 
Inscription : février 2006
Messages : 18
Détails du profil
Informations forums :
Inscription : février 2006
Messages : 18
Points : 3
Points : 3
Merci maintenant ca marche !!!

bonne soirée à toi, tu me sauves la vie
tmryuga est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 13h09.


 
 
 
 
Partenaires

Hébergement Web