Bonjour à tous,

Je viens vers vous car j'ai actuellement un problème.
J'essaie en vain d'enregistrer sous un document Writer que j'ai ouvert depuis calc via une macro.
Cette macro fonctionne quand elle est stockée en local, mais est inopérante lorsqu'elle est enregistrée dans le classeur.
La partie édition fonctionne, c'est la partie enregistrement qui fait des siennes...

En fait j'ouvre le fichier Test.odt, je le modifie, et je souhaiterais l'enregistrer sous "leno.odt" pour pouvoir conserver l'original non modifié en plus de la nouvelle version.
J'ai eu beau chercher sur notre ami Google, je n'ai rien trouvé qui fonctionne :/

Je vous joins le code.

Merci à vous.

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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
Sub Edition
 
Dim Fichier As String
Dim ledoc As Object
Dim Args()
Dim oDocument As Object, oSheet As Object, oCell As Object
oDocument = ThisComponent
dim monclasseur as object
dim mafeuille as object
dim leno as string
 
MonClasseur = oDocument.getSheets
MaFeuille = MonClasseur.GetByName("Feuille1")
 
'partie édition 
 
leno = Mafeuille.getCellByPosition(0,0).string
Fichier = ConvertToUrl("X:\Document\Test.odt")
ledoc = StarDesktop.loadComponentFromURL(Fichier,"_blank",0 ,Args() )
 
FandR = ledoc.createReplaceDescriptor
 
dim ancien(2) as string, nouveau(2) as string
dim i as long
 
ancien() = array("dateredac", "leno")
nouveau() = array(Cstr(Date), leno)
 
for i=0 to 1
  FandR.SearchString = ancien(i)
  FandR.ReplaceString = nouveau(i)
  ledoc.replaceAll(FandR)
next i
 
 'enregistrer sous le document
 
dim document as object
dim dispatcher as object
 
document   = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
 
dim args1(1) as new com.sun.star.beans.PropertyValue
args1(0).Name = "URL"
args1(0).Value = ConvertToUrl("X:\Document\" & leno & ".odt") 'On converti le chemin
args1(1).Name = "FilterName"
args1(1).Value = "calc8"
 
dispatcher.executeDispatch(document, ".uno:SaveAs", "", 0,args1() )
 
'fermer le document
 
ledoc.store    
ledoc.close(True)
 
End Sub