bonjour,

J'ai ouvert un post précédemment pour un problème de sauvegarde d'un fichier Excel, aujourd'hui on m'a fait la bonne blague de me dire que dans certaines agences il n'avait pas Office mais OpenOffice.... du coup je dois pondre le même script mais avec ce soft.
J'ai adapté mes lignes de manipulation du fichier et cela fait le job, mais là encore, impossible de sauvegarder le document une fois modifié. Alors autant excel c'est moi qui ait fait ma buse, autant OO c'est un joyeux foutoir leur mécanisme. J'ai beau lire leur site, je comprends pas ce qu'attend la commande.

J'ai testé document.store = erreur de mémoire, j'ai lu qu'il fallait affecté de la mémoire au fichier, ok super j'y comprends rien et les explications restent assez obscures à mon petit level...
Du coup j'ai testé avec document.storeAsURL et ToURL mais j'ai des soucis de compilation. Et je n'arrive pas a comprendre le dernier argument des fonction loadComponentFromURL et storeAS ou StoreTo avec ces array, args, et consœurs.

Voici mon script, j'ai bien fait attention au placement de la sauvegarde.
Je voudrais éditer le fichier, puis l'enregistré au même endroit avec le même nom.


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
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set myRegExp = New RegExp
Set myRegExpIP = New RegExp
myRegExp.IgnoreCase = True
myRegExp.Global = True
myRegExp.Pattern = "\(.*\)$|[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}"
Dim serviceManager
Dim Desktop
Dim Fichier
Dim arg()
Dim URL
Dim sheet
Dim Cell
 
'Création d'une instance Open Office
Set serviceManager = CreateObject("com.sun.star.serviceManager")
Set Desktop = serviceManager.createInstance("com.sun.star.frame.Desktop")
 
objStartFolder = "D:\Users\ngreder\Downloads\FVS\FVS"
Set objFolder = objFSO.GetFolder(objStartFolder)
Set colFiles = objFolder.Files
 
' Fichier de commande pour intégration
FichierCMD = objStartFolder & "\command_OO.txt"
Set NewFichier = objFSO.CreateTextFile(FichierCMD,TRUE)
 
For Each objFile in colFiles
	If UCase(objFSO.GetExtensionName(objFile.name)) = "XLSX" Then
		FileName = objFSO.GetFileName(objFile)
		'wscript.echo FileName
		'wscript.echo objFile
		URL = "file:///" & objFile
		'wscript.echo URL
		Set Document = Desktop.loadComponentFromURL(URL, "_blank", 0, Array())
		Set Sheets = Document.getSheets()
		Set Sheet = Sheets.getByIndex(1)
		For row=24 to 55
				If Sheet.getCellByPosition(0,row).String = "Services" And Sheet.getCellByPosition(1,row).String <> "Remote Procedure Call (RPC)(RpcSs)" Then
				services_long=Sheet.getCellByPosition(1,row).String
				'wscript.echo services_long
				services_short = myRegExp.Replace(services_long, "")
				Sheet.getCellByPosition(1,row).String = services_short
				'wscript.echo services_short
				End If
				If Sheet.getCellByPosition(0,row).String = "Services" And Sheet.getCellByPosition(1,row).String = "Remote Procedure Call (RPC)(RpcSs)" Then
				Sheet.getCellByPosition(1,row).String = "Remote Procedure Call (RPC)"
				End If
		Next
		Document.store
		'Closing the document.
		'Document.Close (True)
		'Set Document = Nothing
	End If	
Next
Encore désolé mais les commandes save et moi semblons définitivement fâché en VBS

Voilà, d'avance merci a vous joyeux et compétents developpeurs