[Calc] Manipulation Fichier OpenOffice
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:
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