Enregistrer un .xls en vbscript

jo77 -  
Serval07 Messages postés 15 Date d'inscription   Statut Membre -
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. Canard007 Messages postés 5954 Date d'inscription   Statut Contributeur 216
     
    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
    1. jo77
       
      merci beaucoup !!!
      0
    2. jo77
       
      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 
      
      0
  2. Lupin
     
    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
    0
  3. jo77
     
    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
    0
  4. Utilisateur anonyme
     
    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
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Utilisateur anonyme
     
    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
    0
  7. jo77
     
    Merci beaucoup. J'ai trouvé aussi comme option
    wbExcel.Close -1
    
    et ça l'enregistre dans le meme fichier.
    0
  8. clark
     
    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
    0
  9. Serval07 Messages postés 15 Date d'inscription   Statut Membre 2
     
    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.
    0