Ce didacticiel VBA explique comment enregistrer un fichier à l'aide des commandes Enregistrer et Enregistrer sous dans VBA.
Enregistrer le classeur - VBA
La commande VBA Enregistrer enregistre un fichier Excel de la même manière qu'en cliquant sur l'icône Enregistrer ou en utilisant le raccourci Enregistrer (CTRL + S).
Enregistrer un classeur spécifié
Pour enregistrer un classeur, référencez l'objet classeur et utilisez la commande Enregistrer.
1 | Classeurs("savefile.xlsm").Enregistrer |
Enregistrer le classeur actif
Remarque : il s'agit du classeur actif actuel à partir de with dans le code VBA, qui est différent de ThisWorkbook qui contient le code en cours d'exécution.
1 | ActiveWorkbook.Enregistrer |
Enregistrer le classeur où le code est stocké
Enregistrer tous les classeurs ouverts
Cela parcourra tous les classeurs ouverts, en sauvegardant chacun.
12345 | Dim wb comme classeurPour chaque wb dans Application.Workbookswb.EnregistrerWb suivant |
Enregistrer tous les classeurs ouverts qui n'ont pas été ouverts en lecture seule
Remarque : l'ouverture d'un classeur en mode Lecture seule empêche l'enregistrement du fichier.
Pour enregistrer le fichier, vous devrez utiliser Enregistrer sous et enregistrer le fichier sous un nom différent.
1234567 | Dim wb comme classeurPour chaque wb dans Application.WorkbooksSinon wb ReadOnly alorswb.EnregistrerFin siWb suivant |
Enregistrer un classeur défini par une variable
Cela enregistrera un classeur qui a été affecté à une variable d'objet de classeur.
1234 | Dim wb comme classeurdéfinir wb = classeurs("savefile.xlsm")wb.sauvegarder |
Enregistrer un classeur défini par une variable chaîne
Cela enregistrera un classeur dont le nom a été enregistré dans une variable de chaîne.
1234 | Dim wbstring en tant que chaînewbstring = "savefile.xlsm"classeurs (wbstring).save |
Enregistrez un classeur défini par l'ordre dans lequel il a été ouvert.
Remarque : le premier classeur ouvert aurait 1, le second 2, etc.
Enregistrer un classeur en fonction d'une valeur de cellule
Cela enregistrera un classeur dont le nom se trouve dans une valeur de cellule.
1234 | Dim wbstring en tant que chaînewbstring = activeworkbook.sheets("sheet1").range("wb_save").valueclasseurs (wbstring).save |
Enregistrer sous - VBA
La commande VBA Enregistrer sous enregistre un fichier Excel en tant que nouveau fichier, de la même manière qu'en cliquant sur l'icône Enregistrer sous ou en utilisant le raccourci Enregistrer sous (Alt > F > A).
Ci-dessus, nous avons identifié toutes les façons de spécifier le classeur à enregistrer. Vous pouvez utiliser exactement les mêmes méthodes pour identifier les classeurs lorsque vous utilisez Enregistrer sous.
Enregistrer sous se comporte de la même manière que Enregistrer, sauf que vous devez également spécifier le nom du nouveau fichier.
En fait, Enregistrer sous a de nombreuses variables potentielles à définir :
Syntaxe Enregistrer sous :
123 | objet classeur .SaveAs(FileName, FileFormat, Password, WriteResPassword, _ReadOnlyRecommended, CreateBackup, AccessMode, ConflictResolution, _AddToMru, TextCodepage, TextVisualLayout, Local) |
Une description complète de tous les arguments SaveAs est incluse ci-dessous. Pour l'instant, nous allons nous concentrer sur les exemples les plus courants.
Remarque : Ces arguments peuvent être saisis sous forme de chaîne avec parenthèses ou sous forme de variables définies.
Enregistrer en tant qu'exemples de syntaxe :
Enregistrer le classeur sous - même répertoire
1 | Nom de fichier ActiveWorkbook.SaveAs : = "nouveau" |
ou
1 | ActiveWorkbook.SaveAs "nouveau" |
ou
1234 | Dim wbstring en tant que chaînewbstring = "nouveau"Nom de fichier ActiveWorkbook.SaveAs : = wbstring |
Enregistrer le classeur sous - Nouveau répertoire
1 | Nom de fichier ActiveWorkbook.SaveAs : = "C:\nouveau" |
ou
1234 | Dim wbstring en tant que chaînewbstring = "C:\nouveau"Nom de fichier ActiveWorkbook.SaveAs := wbstring= |
Classeur Enregistrer sous - Nouveau répertoire, spécifier l'extension de fichier
1 | Nom de fichier ActiveWorkbook.SaveAs : = "C:\new.xlsx" |
ou
1234 | Dim wbstring en tant que chaînewbstring = "C:\new.xlsx"Nom de fichier ActiveWorkbook.SaveAs : = wbstring |
Classeur Enregistrer sous - Nouveau répertoire, spécifier l'extension de fichier - Méthode Alt
Vous pouvez également spécifier le format de fichier dans son propre argument.
1234 | .xlsx = 51' (52 pour Mac).xlsm = 52' (53 pour Mac).xlsb = 50' (51 pour Mac).xls = 56' (57 pour Mac) |
1 | Nom de fichier ActiveWorkbook.SaveAs : = « C:\nouveau », Format de fichier := 51 |
Enregistrer le classeur sous - Ajouter un mot de passe pour ouvrir le fichier
1 | ActiveWorkbook.SaveAs Nom de fichier := "C:\new.xlsx", Mot de passe := "mot de passe" |
Enregistrer le classeur sous - Ajouter un mot de passe pour les privilèges d'écriture
Si le mot de passe correct n'est pas fourni, le classeur s'ouvre en lecture seule
1 | Nom de fichier ActiveWorkbook.SaveAs : = "C:\new.xlsx", WriteRes := "mot de passe" |
Classeur Enregistrer sous - Lecture seule recommandée
TRUE pour afficher une boîte de message, recommandant que le fichier soit ouvert en lecture seule.
1 | Nom de fichier ActiveWorkbook.SaveAs : = "C:\new.xlsx", ReadOnlyRecommended := TRUE |
Autres exemples d'enregistrement sous
Boîte de dialogue Créer Enregistrer sous
Cela génère la boîte de dialogue Enregistrer sous, invitant l'utilisateur à enregistrer le fichier.
Gardez à l'esprit que ce code simple peut ne pas être approprié dans tous les cas.
1 | Application.GetSaveAsFilename |
Créer une boîte de dialogue Enregistrer sous avec le nom de fichier par défaut fourni
1 | Application.GetSaveAsFilename InitialFilename:="test.xlsx" |
Créer une boîte de dialogue Enregistrer sous avec le nom de fichier par défaut fourni
1 | Application.GetSaveAsFilename InitialFilename:="test.xlsx" |
Créer et enregistrer un nouveau classeur
Cela créera un nouveau classeur et l'enregistrera immédiatement.
123456 | Dim wb comme classeurDéfinir wb = Workbooks.AddApplication.DisplayAlerts = Fauxwb.SaveAs Nom de fichier : = ”c:\Test1.xlsx”Application.DisplayAlerts = True |
Désactiver les alertes d'enregistrement
Lorsque vous travaillez avec l'enregistrement dans VBA, vous pouvez rencontrer divers avertissements ou invites d'enregistrement. Pour désactiver les avertissements, ajoutez cette ligne de code :
1 | Application.DisplayAlerts=Faux |
et pour réactiver les alertes :
1 | Application.DisplayAlerts=Vrai |