Enregistrer un .xls en vbscript

bonjour,

Je voudrai enregistrer mon fichier excel avant de le fermer, juste après l'impression. J'ai fait ça :
Set objXL = CreateObject("Excel.Application") 
objXL.Visible = false 
objXL.Workbooks.Add doc 
objXL.ActiveSheet.PrintOut 
objXL.ActiveSheet.save
objXL.Visible = FALSE
objXL.quit
Set objXL = Nothing


mais ça ne fonctionne pas. Est-ce que quelqu'un pourrait m'aider??
Merci

8 réponses

  1. Contributeur
    FileCopy toto.xls copie_toto.xls

    'Déclaration des variables
    Dim appExcel As Excel.Application 'Application Excel
    Dim wbExcel As Excel.Workbook 'Classeur Excel
    Dim wsExcel As Excel.Worksheet 'Feuille Excel

    'Ouverture de l'application
    Set appExcel = CreateObject("Excel.Application")
    'Ouverture d'un fichier Excel
    Set wbExcel = appExcel.Workbooks.Open (toto.xls)

    fermeture et enregistrement

    wbExcel.Close 'Fermeture du classeur Excel
    appExcel.Quit 'Fermeture de l'application Excel
    'Désallocation mémoire
    Set wsExcel = Nothing
    Set wbExcel = Nothing
    Set appExcel = Nothing

    pour préciser sous quel nom l'enregistrer :

    ActiveWorkbook.SaveAs FileName:="C:\Documents\File.xls"

    COIN!
    1. merci beaucoup !!!
    2. J'ai toujours un problème : le fichier s'enregistre dans un nouveau dossier Mais je voudrai qu'il fasse juste un sauver le fichier sans l'enregistrer ailleurs. Voici mon code :
      Dim appExcel 'Application Excel 
      Dim wbExcel 'Classeur Excel 
      Dim wsExcel  'Feuille Excel 
      
      'Ouverture de l'application 
      Set appExcel = CreateObject("Excel.Application") 
      'Ouverture d'un fichier Excel 
      Set wbExcel = appExcel.Workbooks.Add ("C:\MR_E3_1_Others.xls") 
      
      
      
      'fermeture et enregistrement 
      appExcel.ActiveSheet.PrintOut 
      wbExcel.save
      wbExcel.Close 'Fermeture du classeur Excel 
      appExcel.Quit 'Fermeture de l'application Excel 
      'Désallocation mémoire 
      Set wsExcel = Nothing 
      Set wbExcel = Nothing 
      Set appExcel = Nothing 
      
  2. Bonjour,

    Vous ne spécifier pas le répertoire de sauvegarde, alors XL sauvegarde dans le répertoire par défault. Au moment de lancer
    la commande "wbExcel.save", vous ne spécifier pas de chemin d'accès, par conséquent XL sauvegarde dans le répertoire courant de l'application XL.

    Utilisez plutôt :

    wbExcel.SaveAs "C:\MR_E3_1_Others.xls"

    Lupin
  3. quand je fais ça, ça me mets "le fichier existe déjà, voulez-vous le remplacer"; en fait j'aimerai enregistrer sans avoir ce message.
    Merci
    1. re :

      Normal, si le fichier est déjà présent, regarder dans l'exemple cité, et appliquer la routine suivante :

      If (FichierExistant(Fichier)=True) Then
      Set xlBook = xlApp.Workbooks.Open(Fichier)
      Flag = True
      Else
      xlApp.SheetsInNewWorkbook = 1
      Set xlBook = xlApp.Workbooks.Add
      End If

      '
      Function FichierExistant(NomFichier)

      Dim fso

      Set fso = CreateObject("Scripting.FileSystemObject")
      FichierExistant = fso.FileExists(NomFichier)
      Set fso = Nothing

      End Function

      '
      Je crois qu'il est possible de placer un paramètre dans la commande SaveAs pour forcer d'écraser un fichier existant mais je ne le connais pas de mémoire et je n'ai pas mon bouquin sous la main, toutefois vous pouvez contourner en détruisant le fichier s'il existe.

      Lupin
      1. Bonjour,

        Je ne sais pas si vous avez trouvé l'option, alors je reporte ici les lignes m'ayant permis de contourner le problème.

        xlApp.DisplayAlerts = False
        xlBook.SaveAs "C:\Test.xls"
        xlApp.DisplayAlerts = True
        xlApp.Quit

        Lupin
        1. Merci beaucoup. J'ai trouvé aussi comme option
          wbExcel.Close -1
          
          et ça l'enregistre dans le meme fichier.
          1. Bonjour a tous, je comprends que ce sujet date mais il m'a mis sur la voie pour ecrire mon code. Je précise que je débute en Vbs.

            J'aimerais monter un code qui me permet de

            1.ouvrir une boite de dialogue qui demandera "est ce que le mois est écoulé en entier". Celle ci proposera deux options: non et on sort de la procédure ou oui et on lance la procédure suivante:

            1.1.j'ai un grapphique dans un fichier excel (grap1.feuille1.xls)

            1.2.je veux aller chercher ce graphe par une commande

            1.3.je veux choisir l'imprimante cute pdf qui imprimera le graphe

            1.4.je veux aller enregister le pdf resultant de l'impression dans un repertoire bien spécifique (c:/repertoire-specifique)

            Je n'ai pas fait le point 1

            pour le point 1.1 j'ai plutot pris la feuille (feuille.xls) car donner l'adresse du graphe je sais pas faire.

            le point 1.2 je crois que c'est bon

            le point 1.3 me retourne une erreur(xlApp.ActivePrinter="CutePDF Writer") je ne sais pas pourquoi

            le point 1.4, j'y reflechit (une proposition serait la bienvenue)

            Mon code:
            Dim xlapp, classeur, feuille, Doc
            
            Set xlapp = CreateObject("Excel.Application")
            xlapp.Visible = True
            
            Set classeur = xlapp.Workbooks.add
            Set feuille = xlapp.ActiveSheet
            
            'point 1.1
            Set Doc = xlApp.WorkBooks.open("C:\Documents and Settings\stagiaire\Bureau\feuille.xls")
            
            Ici on définit l'imprimante qui sera utilisée.
            xlApp.ActivePrinter="CutePDF Writer"
            
            Doc.PrintOut
            Doc.Close
            1. Bonjour, vous avez la solution à mon problème. Je voudrai enregistrer le fichier Excel modifie avant de le fermer et saugarder le fichier sous différent nom après chaque utilisation de l`application. J`ai essayé plusieurs code mais sa ne marche pas.