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

OpenOffice & LibreOffice Discussion :

Sauvegarde fichier CALC


Sujet :

OpenOffice & LibreOffice

  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 Sauvegarde fichier CALC
    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

    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....


    Franchement, je suis pas développeur, et je pleure rien qu'a essayer de comprendre les arguments attendue, les frame et consœurs...
    J'ai trouvé au bas mot 200 exemple de script sur le net, aucun ne fonctionne (chez moi en tout cas).

    je tourne sur un OO 4.1.3.


    Voilà le topo, j'espère avoir penser à mettre toutes les infos dans le cas où une âme charitable prendrait en pitié une pauvre hères comme moi

    D'avance merci

  2. #2
    Membre du Club
    Homme Profil pro
    Chef d'entreprise
    Inscrit en
    Octobre 2016
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chef d'entreprise

    Informations forums :
    Inscription : Octobre 2016
    Messages : 41
    Points : 64
    Points
    64
    Par défaut
    Bonjour,
    Est-ce que tu peux tester cela juste avant Document.Store :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    if Document.hasLocation then
    	adresseDoc = Document.Location
    else
    	adresseDoc = convertToURL("CheminDuFichier")
    end if
    if Document.isModified then
    	Document.storeAsURL(adresseDoc, Array() )
    end if
    Document.setModified(True)
    Document.store

  3. #3
    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
    Hello,

    bon j'ai un petit souci si j'utilise mes variables pour recrée le chemin d'enregistrement, mais en mettant le path en dur, cela fonctionne en effet. Je vais pouvoir avancer sur mon projet en tout cas, merci beaucoup

    Bon j'attend de trouver la bonne formule et je clos le sujet en résolu dès que c'est bon ^^

    Encore mil merci

  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
    Bon, alors j'ai réussi en installant LibreOffice car il gère mieux les XLSX que OO.
    Et mon script marchait bien, j'ai voulu enrichir un peu, le retravailler pour qu'il soit plus propre et la je me dis, j'ai plus besoin de OO, que je désinstalle... et la patatra plus rien ne fonctionne.
    C'est comme si la désinstallation de OO avait supprimer quelque chose et que sa réinstall n'a pas remplacé.

    Maintenant j'ai une erreur sur la ligne 33 avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set Sheets = Document.getSheets()
    Il me dit "Objet requis Document"

    et le document ne s'ouvre même plus (j'ai tenté avec un uatre fichier au cas le premier soit corrompu mais on peut l'ouvrir avec Excel/CALC/LO sans soucis).


    Ma première question est donc, est il nécessaire d'avoir OO en plus de libreoffice ou juste LO suffit?
    Et la deuxième est "pourquoi l'objet Document" n'est plus correctement défini.

    J'espère que vos yeux verront ce que les miens semblent ignorer
    D'avance merci

    Voici mon code:
    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
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    Set objFSO = CreateObject("Scripting.FileSystemObject")
    Set myRegExp = 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 sheet
     
     
    objStartFolder = "E:\GIT\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)
     
    'Création d'une instance Open Office
    Set serviceManager = CreateObject("com.sun.star.serviceManager")
    Set Desktop = serviceManager.createInstance("com.sun.star.frame.Desktop")
     
    For Each objFile in colFiles
    	If UCase(objFSO.GetExtensionName(objFile.name)) = "XLS" Then
    		FileName = objFSO.GetFileName(objFile.Path)
    		'wscript.echo FileName
    		'wscript.echo objFile
    		adresseDoc = convertToURL(objFile)
    		wscript.echo "l'URL du fichier au format OpenOffice est: " & adresseDoc
    		Set Document = Desktop.loadComponentFromURL(adresseDoc, "_blank", 0, Array())
    		Set Sheets = Document.getSheets()
    		Set Sheet = Sheets.getByIndex(1)
    		ServiceReplace
    		IP_Replace
    		Sauvegarde
    	End If	
    Next
     
     
     
     
     
     
    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    ' FONCTIONS
    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
     
    ''''''''''''''
    'ConvertToURL'
    ''''''''''''''
    Function ConvertToURL(objFile)
    Dim sTmpFile
     
      If Left(objFile, 7) = "file://" Then
        ConvertToURL = objFile
        Exit Function
      End If
     
      ConvertToURL = "file:///"
      sTmpFile = objFSO.GetAbsolutePathName(objFile)
      'replace any "\" by "/"
      sTmpFile = Replace(sTmpFile,"\","/") 
      ' replace any % by %25
      sTmpFile = Replace(sTmpFile,"%","%25") 
      'replace any " " by "%20"
      sTmpFile = Replace(sTmpFile," ","%20")
      ConvertToURL = ConvertToURL & sTmpFile
    End Function 
     
     
    ''''''''''''''''
    'ServiceReplace'
    ''''''''''''''''
    Function ServiceReplace ()
    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
    End Function
     
     
    ''''''''''''
    'Sauvegarde'
    ''''''''''''
    Function Sauvegarde
    if Document.hasLocation then
    	adresseDoc = Document.Location
    else
    	adresseDoc = convertToURL(objFile)
    end if
    if Document.isModified then
    	Document.storeAsURL adresseDoc, Array()
    end if
    	Document.setModified(True)
    	Document.store
    	'Closing the document.
    	Document.Close (True)
    	Set Document = Nothing
    End function
     
     
    ''''''''''''
    'IP_Replace'
    ''''''''''''
    Function IP_Replace
     
    IP = Sheet.getCellByPosition(1,4).Value
    		wscript.echo "IP found in original file:" & IP
    		Set Matches = myRegExp.Execute(IP)
    		wscript.echo "Number of IP found:" & Matches.count
    			If Matches.Count > 1 Then
    			IP1 = Matches(0)
    			IP2 = Matches(1)
    			'wscript.echo "IP1 is:" & IP1
    			'wscript.echo "IP2 is:" & IP2	
     
    				'boucle pour l'AFPA
    				If Instr(FileName,"AFPA") <> 0 Then
    					'wscript.echo "client AFPA: " & FileName
    					For each match in Matches
    					IP1 = Matches(0)
    					IP2 = Matches(1)
    						If Instr(IP1,"10.150") Or Instr(IP1,"172.24") <> 0  Then
    						Sheet.getCellByPosition(1,4).Value = IP1
    						wscript.echo "New IP is:" & IP1
    						'ecriture ligne de cmd integration
    						ElseIf Instr(IP2,"10.150") Or Instr(IP2,"172.24") <> 0  Then
    						Sheet.getCellByPosition(1,4).Value = IP2
    						wscript.echo "New IP is:" & IP2
    						End If
    					Next
    							If Instr(FileName,"WINDOWS") <> 0 Then
    							'wscript.echo "Serveur Windows: " & FileName
    							CMD = "C:\php\php.exe D:\IBR_TOOLS\php_depot\company\sitescope\integration\integration_socle_technique.php --conf D:\IBR_TOOLS\conf_clients\sitescope\AFPA_sitescope_serveurs_prod.xml --sitescope_utilise PMON1APPV05 --code_client AFPA --methode_connexion WMI --verbose --fichier_fvs " & Chr(34) & objDestFolder & FileName & Chr(34)
    							NewFichier.WriteLine(CMD)
    							Else
    							'wscript.echo "Serveur Linux: " & FileName
    							CMD = "C:\php\php.exe D:\IBR_TOOLS\php_depot\company\sitescope\integration\integration_socle_technique.php --conf D:\IBR_TOOLS\conf_clients\sitescope\AFPA_sitescope_serveurs_prod.xml --sitescope_utilise PMON1APPV05 --code_client AFPA  --verbose --fichier_fvs " & Chr(34) & objDestFolder & FileName & Chr(34)
    							NewFichier.WriteLine(CMD)
    							End If
    				End If
     
    				'boucle pour CPL
    				If Instr(FileName,"CANAL") Or Instr(FileName,"CPL") <> 0 Then
    					wscript.echo "client CPL: " & FileName
    					For each match in Matches
    					IP1 = Matches(0)
    					IP2 = Matches(1)
    						If Instr(IP1,"10.0") Or Instr(IP1,"172.") Or Instr(IP1,"194.4") <> 0  Then
    						Sheet.getCellByPosition(1,4).Value = IP1
    						wscript.echo "New IP is:" & IP1
    						ElseIf Instr(IP2,"10.0") Or Instr(IP2,"172.") Or Instr(IP1,"194.4") <> 0  Then
    						Sheet.getCellByPosition(1,4).Value = IP2
    						wscript.echo "New IP is:" & IP2
    						End If
    					Next
    							If Instr(FileName,"WINDOWS") Or Instr(FileName,"VIRTUALISATION") <> 0 Then
    							'wscript.echo "Serveur Windows: " & FileName
    							CMD = "C:\php\php.exe D:\IBR_TOOLS\php_depot\company\sitescope\integration\integration_socle_technique.php --conf D:\IBR_TOOLS\conf_clients\sitescope\CPL_sitescope_serveurs_prod.xml --sitescope_utilise FRCP00VPD0040 --code_client CPL --methode_connexion WMI --verbose --fichier_fvs " & Chr(34) & objDestFolder & FileName & Chr(34)
    							NewFichier.WriteLine(CMD)
    							Else
    							'wscript.echo "Serveur Linux: " & FileName
    							CMD = "C:\php\php.exe D:\IBR_TOOLS\php_depot\company\sitescope\integration\integration_socle_technique.php --conf D:\IBR_TOOLS\conf_clients\sitescope\CPL_sitescope_serveurs_prod.xml --sitescope_utilise FRCP00VPD0041 --code_client CPL --verbose --fichier_fvs " & Chr(34) & objDestFolder & FileName & Chr(34)
    							NewFichier.WriteLine(CMD)
    							End If
    				End If
     
    				'boucle pour MTES
    				If Instr(FileName,"MTES") <> 0 Then
    					'wscript.echo "client MTES: " & FileName
    					For each match in Matches
    					IP1 = Matches(0)
    					IP2 = Matches(1)
    						If Instr(IP1,"10.1") Or Instr(IP1,"10.2") Or Instr(IP1,"10.3") Or Instr(IP1,"10.4") Or Instr(IP1,"10.5") Or Instr(IP1,"10.6") Or Instr(IP1,"10.7") Or Instr(IP1,"10.8") Or Instr(IP1,"10.9") <> 0  Then
    						Sheet.getCellByPosition(1,4).Value = IP1
    						wscript.echo "New IP is:" & IP1
    						ElseIf Instr(IP1,"10.1") Or Instr(IP1,"10.2") Or Instr(IP1,"10.3") Or Instr(IP1,"10.4") Or Instr(IP1,"10.5") Or Instr(IP1,"10.6") Or Instr(IP1,"10.7") Or Instr(IP1,"10.8") Or Instr(IP1,"10.9") <> 0  Then
    						Sheet.getCellByPosition(1,4).Value = IP2
    						wscript.echo "New IP is:" & IP2
    						End If
    					Next
    							If Instr(FileName,"WINDOWS") <> 0 Then
    							'wscript.echo "Serveur Windows: " & FileName
    							CMD = "C:\php\php.exe D:\IBR_TOOLS\php_depot\company\sitescope\integration\integration_socle_technique.php --conf D:\IBR_TOOLS\conf_clients\sitescope\MTES_sitescope_serveurs_prod.xml --sitescope_utilise PROSIS010093 --code_client MTES --verbose  --methode_connexion WMI --fichier_fvs " & Chr(34) & objDestFolder & FileName & Chr(34)
    							NewFichier.WriteLine(CMD)
    							Else
    							'wscript.echo "Serveur Linux: " & FileName
    							CMD = "C:\php\php.exe D:\IBR_TOOLS\php_depot\company\sitescope\integration\integration_socle_technique.php --conf D:\IBR_TOOLS\conf_clients\sitescope\MTES_sitescope_serveurs_prod.xml --sitescope_utilise PROSIS020093 --code_client MTES --verbose --fichier_fvs " & Chr(34) & objDestFolder & FileName & Chr(34)
    							NewFichier.WriteLine(CMD)
    							End If
    				End If
    		End If
    End function

  5. #5
    Rédacteur

    Avatar de zoom61
    Homme Profil pro
    ...
    Inscrit en
    Janvier 2005
    Messages
    9 429
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : ...
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2005
    Messages : 9 429
    Points : 58 222
    Points
    58 222
    Billets dans le blog
    11
    Par défaut
    Le problème peut venir des installs et désinstalls. Ce qu'il faudrait faire c'est désinstaller le tout (AOO et LibO), ensuite si tu es sous Windows, il serait peut-être utile de passer un outil comme CCleaner.
    Et refaire une installation propre de l'un ou de l'autre.
    N'oubliez pas le Tag afin de faciliter la recherche, et en votant cela permet de mieux la cibler.

    Je ne réponds pas aux messages privés s'ils sont liés à une question technique

  6. #6
    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
    Bonjour,

    bon je viens de tout réinstaller, et malheureusement l'erreur sur la ligne 33 avec Object requis "Document"

    Je dois avoir une erreur de syntaxe quelque part mais je la vois pas. Un oeil extérieur verrait il où peut se situer mon problème ??

    Merci encore messieurs

  7. #7
    Rédacteur

    Avatar de zoom61
    Homme Profil pro
    ...
    Inscrit en
    Janvier 2005
    Messages
    9 429
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : ...
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2005
    Messages : 9 429
    Points : 58 222
    Points
    58 222
    Billets dans le blog
    11
    Par défaut
    Ton fichier a bien 2 onglets !
    N'oubliez pas le Tag afin de faciliter la recherche, et en votant cela permet de mieux la cibler.

    Je ne réponds pas aux messages privés s'ils sont liés à une question technique

  8. #8
    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
    Nom : Capture.PNG
Affichages : 424
Taille : 35,0 Ko
    Nom : file.PNG
Affichages : 411
Taille : 56,6 KoNom : path.PNG
Affichages : 425
Taille : 16,0 Ko

    Oui il y a plusieurs feuilles. Pour moi la syntaxe de l'url est correcte, le path est bon...
    Et je vois rien s'ouvrir, donc c'est peut être normal compte tenu que le script s'arrete juste après le loadComponent.

    Je met le fichier Excel en question en PJ au cas où quelqu'un veuille tester en local.
    Je continue d'essayer différente formule mais je suis toujours dans les choux pour le moment
    Fichiers attachés Fichiers attachés

  9. #9
    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 chaque fois que je fais du scripting, je me rappelle pourquoi j'ai choisi une autre voie en informatique...

    donc j'ai repris le début du mon programme sans AUCUN changement, jusqu'au loadComponent dans un nouveau script, et la miracle le fichier s'ouvre.
    Je relance mon script complet dans la foulée, et tout tourne comme si de rien n'était !!

    Donc je suis content que cela fonctionne de nouveau mais je suis totalement frustré de pas comprendre pourquoi du jour au lendemain mon code n'a plus fonctionné. J'ai même tenter précédemment d'ouvrir le document avec son chemin en dure, d'ouvrir OO ou LO au préalable, rien n'y a fait.

    Moralité le problème venait bien du loadComponentFromURL qui ne faisait rien mais ne générait aucune erreur...
    Excel est payant, pas aussi interopérable mais quand même moins tarabiscoté

    Bon bah comme avant, je laisse ce post ouvert au cas où j'ai une question supplémentaire

    En tout cas merci d'avoir pris le temps de m'aider

  10. #10
    Membre actif

    Homme Profil pro
    Apprenti Langage C, pratiquant OpenOffice et Poo
    Inscrit en
    Février 2015
    Messages
    229
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre (Centre)

    Informations professionnelles :
    Activité : Apprenti Langage C, pratiquant OpenOffice et Poo
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2015
    Messages : 229
    Points : 218
    Points
    218
    Par défaut
    Bonjour,

    Sous OObasic, avant le chargement d'un fichier :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Document = Desktop.loadComponentFromURL(adresseDoc, "_blank", 0, Array())
    ce qui est correctement écrit, tu dois déclarer les propriétés du document :

    ce qui n'apparaît pas dans ton code.


    Création, ouverture et import de documents
    La méthode
    StarDesktop.loadComponentFromURL(URL, Frame, SearchFlags, FileProperties)
    Le premier paramètre de la méthode loadComponentFromURL indique l'URL du fichier associé.
    En tant que deuxième paramètre, loadComponentFromURL attend un nom pour l'objet Frame de la fenêtre que
    OpenOffice.org crée en interne pour son administration. Le nom prédéfini _blank est généralement utilisé à ce
    stade et indique à OpenOffice.org de créer une fenêtre. Il est également possible de spécifier la valeur _hidden qui
    permet de charger le document correspondant tout en le gardant invisible.
    L'utilisateur peut ouvrir un document OpenOffice.org à l'aide de ces paramètres, puisque des substituants (des
    valeurs factices) peuvent être attribués aux deux derniers paramètres :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Dim Doc As Object
    Dim Url As String
    Dim Dummy() 'It is an (empty) array of PropertyValues
    Url = "file:///C:/test.odt"
    Doc = StarDesktop.loadComponentFromURL(Url, "_blank", 0, Dummy())
    dans : FR/Documentation/BASIC Guide/StarDesktop page 76

    Même si cette propriété est vide, tu dois la déclarer en somme.

    Autre exemples :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Sub OuvrirCompte
    Dim Desktop As Object , Doc As Object
    Dim Fichier As String
    Dim Args()
    Desktop = createUnoService("com.sun.star.frame.Desktop")
    Fichier = "file:///D:/Mairie/Budget/CompteAdministratif.ods"
    Doc = Desktop.LoadComponentFromURL(Fichier,"_blank",0,Args())
    End Sub
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    ...
    Dim Args(0) as new com.sun.star.beans.PropertyValue
    * *Args(0).Name = "MacroExecutionMode"
    * *Args(0).Value = com.sun.star.document.MacroExecMode.ALWAYS_EXECUTE* * 'par exemple
    Doc = Desktop.LoadComponentFromURL(Fichier,"_blank",0,Args())
     
     
    La liste des options possibles : constants group MacroExecMode.
    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
    Sub impression
    Dim document as object, feuil as object, feuille as object, zone as object
    Dim Props(0) as New com.sun.star.beans.PropertyValue
    Dim adrzones(1) as New com.sun.star.table.CellRangeAddress
    Dim date as long
    'Variable pour la sauvegarde
    Dim dummy()
    Dim propFich(0) as New com.sun.star.beans.PropertyValue
    Dim adressedoc as string, adressebc as string
    Dim numerobc as integer, nomclient as string, url as string, urlbc as string, repertoire as string, extension as string
     
    'On se positionne sur l'onglet bon de commande
    document = thisComponent
    feuil = document.sheets
    feuille = feuil.getbyname("Bon de commande")
     
    'Sauvegarde sous le nom dende dans le repertoire de transfert en ods- OK
       repertoire = "//home/paul/Desktop/Bc_gasin/"
       nomclient = InputBox("Entrer le nom du fichier:")
       extension = ".ods"
       url = repertoire + nomclient + extension
       adressedoc = converttourl(url)
       document.storeasurl(adressedoc, dummy() )
     
    'Sauvegarde sous le nom dende dans le repertoire de transfert - en cours
       repertoire = "//home/paul/Desktop/Bc_gasin/"
       nomclient = InputBox("Entrer le nom du fichier:")
       extension = ".pdf"
       url = repertoire + nomclient + extension
       adressedoc = converttourl(url)
       propFich(0).Name = "FilterName"
       propFich(0).Value = "calc_pdf_Export"
       document.storeToURL( adressedoc, propFich())
    '   document.storeToURL( adressedoc, Array( kePropertyValue( "FilterName", "calc_pdf_Export" ) ) )
     
    End Sub
    Pascaltech

    Traduction : guides, manuels, normes : http://tradinfo.e-monsite.com/

Discussions similaires

  1. [Type de données]Comment sauvegarder fichiers dans une bdd?
    Par splinternabs dans le forum Décisions SGBD
    Réponses: 4
    Dernier message: 06/04/2006, 15h14
  2. [XML] [PHP] Sauvegarde fichier xml
    Par ribrok dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 11/10/2005, 16h58
  3. [DOM XML] Sauvegarde fichier xml
    Par ribrok dans le forum Bibliothèques et frameworks
    Réponses: 5
    Dernier message: 11/10/2005, 14h49
  4. [quel langage] sauvegarder fichier dont l'url est connu
    Par azerty_essai dans le forum Langages de programmation
    Réponses: 3
    Dernier message: 28/03/2005, 12h14
  5. Sauvegarde fichier excel
    Par tiopan dans le forum VBA Access
    Réponses: 2
    Dernier message: 22/10/2003, 13h36

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