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. 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.
    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. Merci beaucoup. J'ai trouvé aussi comme option
        wbExcel.Close -1
        
        et ça l'enregistre dans le meme fichier.
        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. 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. 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. 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
              2. 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