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 :

Sauvegarde fichier Excel en erreur


Sujet :

VBScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    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
    Par défaut Sauvegarde fichier Excel en erreur
    Bonjour,

    je sais bien que le sujet a été traité 600 fois déjà, et j'ai passé des heures à regarder sur le NET la syntaxe d'une telle commande, pourtant, j'ai beau regarder dans tous les sens, je ne comprends pas pourquoi cela pose problème dans mon script.

    N'ayant personne a qui demandé un œil extérieur pour voir ce que mes yeux ne semble plus en état de faire, je sollicite votre aide sur la question

    Voici mon script (version épurée):
    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
    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 objWorksheet
    Dim objExcel
    Dim services_short
    Dim services_long
    Dim match
    Dim objWorkbook
     
     
     
    Set objExcel = CreateObject("Excel.Application")
     
    'objExcel.Visible = True
    objStartFolder = "D:\Users\ngreder\Downloads\FVS"
    objDestFolder = "D:\TEMP_FVS\"
    Set objFolder = objFSO.GetFolder(objStartFolder)
    Set colFiles = objFolder.Files
     
    FichierCMD = objStartFolder & "\command.txt"
    Set NewFichier = objFSO.CreateTextFile(FichierCMD,TRUE)
    'wscript.echo FichierCMD
     
    For Each objFile in colFiles
    	If UCase(objFSO.GetExtensionName(objFile.name)) = "XLS" Then
    		'wscript.echo objFile
    		FileName = objFSO.GetFileName(objFile)
    		'wscript.echo "filename analyser: " & FileName
    		Set objWorkbook = objExcel.Workbooks.Open(objFile)
    		Set objWorksheet = objWorkbook.Worksheets(2)
    			For row=24 to 50
    				If objWorksheet.Cells(row,1).Value = "Services" And objWorksheet.Cells(row,2).Value <> "Remote Procedure Call (RPC)(RpcSs)" Then
    				services_long=objWorksheet.Cells(row,2).Value
    				'wscript.echo services_long
     
    blablabla blablabla....
     
     
    		End If
    	End If
    objExcel.DisplayAlerts = False
    objExcel.objWorkbook.Save
     
     
    Next
    objExcel.Quit

    Quand j'exécute mon script, il me sort une seule erreur: Cet objet ne gère pas cette propriété ou cette méthode objWorkbook 800A01B6 (sur la ligne correspondant a la cmd objExcel.objWorkbook.Save)

    J'ai testé les formes suivantes:
    - objWorkbook.Save
    - objExcel.ActiveWorkbook.Save

    rien n'y fait, cela ne compile pas. Si je commente le Save le script fait le job sans souci, du coup je ne vois/comprends plus

    Par acquis de conscience j'ai attaché l'ensemble du script en PJ de ce post.

    Vous remerciant tous par avance pour le temps que vous me consacrerez pour une question déjà poser à moultes reprises...
    Fichiers attachés Fichiers attachés

  2. #2
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut

    Bonjour !

    objExcel.objWorkbook.Save …

    _________________________________________________________________________________________________________
    Je suis Paris, Nice, Bruxelles, Charlie, …

  3. #3
    Membre confirmé
    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
    Par défaut
    Bonjour Marc,

    malheureusement c'est une des options que j'ai testée, mais il me renvoie une erreur "Objet requis:objWorkbook"

    Ce truc me rend fou, je comprends pas pourquoi cela ne fonctionne pas...

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

    Informations forums :
    Inscription : Février 2006
    Messages : 1 302
    Par défaut
    bonjour,

    1er point :
    l'itération des objets File (ligne 29) va renvoyer tous les fichiers du StartFolder
    une condition a bien été placée ligne 30 pour ne traiter que les fichiers *.xls sauf que
    la sauvegarde ligne 47 se fait en dehors de cette condition d'où l'erreur

    2ème point :
    comme déjà indiqué par Marc-L, l'objet objWorkBook est une variable définie arbitrairement par le script
    et non une propriété du modèle objet d'Excel donc : objWorkbook.Save et non objExcel.objWorkbook.Save

    3ème point :
    enfin il serait plus propre (ligne 34) d'écrire Set objWorkbook = objExcel.Workbooks.Open(objFile.Name) ou lieu de Set objWorkbook = objExcel.Workbooks.Open(objFile)
    même si la propriété par défaut doit être Name ce qui permet au script de fonctionner - un peu par hasard -
    nomen omen, nemo non omen - Consultez la FAQ VBScript et les cours et tutoriels VBScript
    le plus terrible lorsqu'une voiture renverse un piéton, c'est que ce sont les freins qui hurlent. (ramón)
    pas de questions techniques par mp

  5. #5
    Membre confirmé
    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
    Par défaut
    Okkkkkkkk ça marche !!

    en effet c'est le placement de ma fonction Save qui était mauvais, en le remettant dans la boucle If cela fonctionne merci.
    Par contre, je n'ai pas bien compris l'explication sur objFile.Name, j'ai voulu tester pour voir la différence, mais cela ne compile pas.

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

    Informations forums :
    Inscription : Février 2006
    Messages : 1 302
    Par défaut
    oops, c'est Path la propriété par défaut donc :

    Set objWorkbook = objExcel.Workbooks.Open(objFile.Path) au lieu de Set objWorkbook = objExcel.Workbooks.Open(objFile)

    sinon le choix de tes noms de variables montrent une certaine confusion entre les objets et les chaines de caractères

    et sinon un ptit pour la route ?
    nomen omen, nemo non omen - Consultez la FAQ VBScript et les cours et tutoriels VBScript
    le plus terrible lorsqu'une voiture renverse un piéton, c'est que ce sont les freins qui hurlent. (ramón)
    pas de questions techniques par mp

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. sauvegarde fichier excel sans boite dialogue
    Par ghostvb dans le forum VBScript
    Réponses: 6
    Dernier message: 10/07/2008, 17h39
  2. Sauvegarde Fichier excel
    Par aliboubou dans le forum VBA Access
    Réponses: 1
    Dernier message: 10/05/2007, 09h21
  3. Sauvegarde fichier excel avec la date
    Par Renardo dans le forum Access
    Réponses: 8
    Dernier message: 03/09/2006, 14h20
  4. Sauvegarde Fichier Excel
    Par Xav++ dans le forum C++Builder
    Réponses: 7
    Dernier message: 22/06/2006, 19h23
  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