IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBScript Discussion :

[Calc] Manipulation Fichier OpenOffice


Sujet :

VBScript

  1. #1
    Membre régulier
    Homme Profil pro
    Architecte Supervision
    Inscrit en
    Juillet 2005
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Architecte Supervision
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juillet 2005
    Messages : 84
    Points : 79
    Points
    79
    Par défaut [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 : 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

  2. #2
    Membre régulier
    Homme Profil pro
    Architecte Supervision
    Inscrit en
    Juillet 2005
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Architecte Supervision
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juillet 2005
    Messages : 84
    Points : 79
    Points
    79
    Par défaut
    J'ai aussi testé cela:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    		Dim myproperty(0) as new com.sun.star.beans.PropertyValue
    		property(0).Name = "Overwrite"
    		property(0).Value = "True"
    		Document.storeToURL(URL, myproperty())
    je reçois un fin d'instruction attendue pour la ligne Dim mproperty....

  3. #3
    Rédacteur
    Avatar de omen999
    Profil pro
    Inscrit en
    Février 2006
    Messages
    1 299
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 1 299
    Points : 3 554
    Points
    3 554
    Par défaut
    bonjour,

    le modèle objet des applications Open/LibreOffice est un vaste foutoir
    qui rend son exploitation très pénible
    personnellement, je n'ai fait qu'effleurer le sujet - je ne suis pas
    utilisateur - et la doc sur le net requiert une expertise certaine pour la maitriser
    tu trouveras peut-être des experts sur le forum réservé à Open/LibreOffice...

  4. #4
    Membre régulier
    Homme Profil pro
    Architecte Supervision
    Inscrit en
    Juillet 2005
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Architecte Supervision
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juillet 2005
    Messages : 84
    Points : 79
    Points
    79
    Par défaut
    A cela me rassure, si même un expert trouve que leur tambouille est un poil compliqué je me sens moins con

    Merci du conseil Omen, je n'avais pas vu ce forum dédié, je viens de poster et ne manquerai pas d'y poster ici la réponse si je la trouve par moi même ou avec l'aide d'un gentil utilisateur de ce forum

Discussions similaires

  1. [Lazarus] [Mandriva 2009] Manipuler des fichiers OpenOffice sur Linux
    Par CKDevelop dans le forum Lazarus
    Réponses: 4
    Dernier message: 14/02/2009, 13h23
  2. Langage pour manipuler fichiers
    Par Dolhmen dans le forum Windows
    Réponses: 15
    Dernier message: 26/04/2006, 21h48
  3. Manipulation fichier excel : quel langage ?
    Par HaTnuX dans le forum Windows
    Réponses: 7
    Dernier message: 14/04/2006, 19h34
  4. manipulation fichier avec Mysql
    Par poulacou dans le forum Requêtes
    Réponses: 3
    Dernier message: 17/03/2006, 09h50
  5. Manipulation Fichiers Audio
    Par black is beautiful dans le forum Audio
    Réponses: 5
    Dernier message: 11/12/2005, 22h21

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo