VBA Ouvrir / Fermer le classeur

Dans ce didacticiel, vous apprendrez à utiliser VBA pour ouvrir et fermer le classeur Excel de plusieurs manières.

VBA vous permet d'ouvrir ou de fermer des fichiers en utilisant les méthodes standard .Ouvert et .Proche.

Si vous voulez savoir comment vérifier si un fichier existe avant d'essayer d'ouvrir le fichier, vous pouvez cliquer sur ce lien : VBA File Exists

Ouvrir un classeur en VBA

Ouvrir le classeur à partir du chemin

Si vous savez quel fichier vous souhaitez ouvrir, vous pouvez spécifier son chemin d'accès complet dans la fonction. Voici le code :

1 Workbooks.Open "C:\VBA Folder\Sample file 1.xlsx"

Cette ligne de code ouvre le fichier « Exemple de fichier 1 » à partir du « Dossier VBA ».

Ouvrir le classeur - ActiveWorkbook

Lorsque vous ouvrez un classeur, il devient automatiquement ActiveWorkbook. Vous pouvez référencer le classeur nouvellement ouvert comme suit :

1 ActiveWorkbook.Enregistrer

Lorsque vous référencez une feuille ou une plage et omettez le nom du classeur, VBA supposera que vous faites référence à ActiveWorkbook :

1 Sheets("Sheet1").Name = "Entrée"

Ouvrir le classeur et affecter à une variable

Vous pouvez également ouvrir un classeur et l'affecter directement à une variable objet. Cette procédure ouvrira un classeur pour le wb variable, puis enregistrez le classeur.

123456 Sous OpenWorkbookToVariable()Dim wb comme classeurDéfinir wb = Workbooks.Open("C:\VBA Folder\Sample file 1.xlsx")wb.EnregistrerFin du sous-marin

L'attribution de classeurs à des variables lorsqu'elles s'ouvrent est le meilleur moyen de garder une trace de vos classeurs

Boîte de dialogue Ouvrir un fichier de classeur

Vous pouvez également déclencher la boîte de dialogue Ouvrir un fichier de classeur. Cela permet à l'utilisateur de naviguer jusqu'à un fichier et de l'ouvrir :

12345678 Sous OpenWorkbook ()Dim strFile As StringstrFile = Application.GetOpenFilename()Classeurs.Open (strFile)Fin du sous-marin

Comme vous pouvez le voir dans l'image 1, avec cette approche, les utilisateurs peuvent choisir le fichier à ouvrir. La boîte de dialogue Ouvrir un fichier peut être fortement personnalisée. Vous pouvez choisir par défaut un certain dossier, choisir les types de fichiers visibles (ex… xlsx uniquement), et plus encore. Lisez notre tutoriel sur la boîte de dialogue Ouvrir un fichier pour des exemples détaillés.

Ouvrir un nouveau classeur

Cette ligne de code ouvrira un nouveau classeur :

1 Classeurs.Ajouter

Ouvrir un nouveau classeur dans une variable

Cette procédure ouvrira un nouveau classeur, en l'affectant à la variable wb :

1234 Sous-OpenNewWorkbook()Dim wb comme classeurDéfinir wb = Workbooks.AddFin du sous-marin

Ouvrir la syntaxe du classeur

Lorsque vous utilisez Workbooks.Open, vous remarquerez peut-être qu'il existe de nombreuses options disponibles lors de l'ouverture du classeur :

Le nom de fichier est requis. Tous les autres arguments sont facultatifs - et vous n'aurez probablement pas besoin de connaître la plupart des autres arguments. Voici les deux plus courantes :

Ouvrir le classeur en lecture seule

Lorsque le classeur est ouvert en lecture seule, vous ne pouvez pas enregistrer sur le fichier d'origine. Cela empêche la modification du fichier par l'utilisateur.

1 Workbooks.Open "C:\VBA Folder\Sample file 1.xlsx", , True

Ouvrir le classeur protégé par mot de passe

Un classeur peut être protégé par mot de passe. Utilisez ce code pour ouvrir le classeur protégé par mot de passe :

1 Workbooks.Open "C:\VBA Folder\Sample file 1.xlsx", , , "mot de passe"

Ouvrir les notes de syntaxe du classeur

Notez que dans l'image ci-dessus, nous avons inclus une parenthèse "(" pour afficher la syntaxe. Si vous utilisez des parenthèses lorsque vous travaillez avec Workbooks.Open, vous devez affecter le classeur à une variable :

1234 Sous OpenWB()Dim wb comme classeurDéfinir wb = Workbooks.Open("C:\VBA Folder\Sample file 1.xlsx", True, True)Fin du sous-marin

Fermer un classeur en VBA

Fermer un classeur spécifique

De la même manière que pour ouvrir un classeur, il existe plusieurs façons de fermer un fichier. Si vous savez quel fichier vous souhaitez fermer, vous pouvez utiliser le code suivant :

1 Classeurs.Fermer ("C:\VBA Folder\Sample file 1.xlsx")

Cette ligne de code ferme le fichier « Exemple de fichier 1 » s'il est ouvert. Sinon, il renverra une erreur, vous devez donc vous occuper de la gestion des erreurs.

Fermer le classeur actif

Si vous souhaitez fermer le classeur actuellement actif, cette ligne de code vous permettra de le faire :

1 ActiveWorkbook.Fermer

Fermer tous les classeurs ouverts

Pour fermer tous les classeurs ouverts, vous pouvez simplement utiliser ce code :

1 Classeurs.Fermer

Fermer le premier classeur ouvert

Cela fermera le premier classeur ouvert/créé :

1 Classeurs(1).Fermer

Remplacez 1 par 2 pour fermer le deuxième classeur ouvert/créé et ainsi de suite.

Fermer sans enregistrer

Cela fermera un classeur sans enregistrer et sans afficher l'invite d'enregistrement :

1 ActiveWorkbook.Close savechanges:=False

Enregistrer et fermer sans invite

De même, cela enregistrera et fermera un classeur sans afficher l'invite d'enregistrement :

1 ActiveWorkbook.Close savechanges:=True

Remarque : Il existe plusieurs autres façons d'indiquer s'il faut enregistrer ou non un classeur et également d'afficher ou non les invites. Ceci est discuté plus en détail ici.

Autres exemples ouverts de classeur

Ouvrir plusieurs nouveaux classeurs

Cette procédure ouvrira plusieurs nouveaux classeurs, affectant les nouveaux classeurs à un tableau :

12345678 Sub OpenMultipleNewWorkbooks()Dim arrWb(3) comme classeurDiminuer en tant qu'entierPour i = 1 à 3Définir arrWb(i) = Workbooks.AddEnsuite jeFin du sous-marin

Ouvrir tous les classeurs Excel dans un dossier

Cette procédure ouvrira tous les classeurs Excel d'un dossier à l'aide du sélecteur Ouvrir la boîte de dialogue de fichier.

12345678910111213141516 Sub OpenMultipleWorkbooksInFolder()Dim wb comme classeurDim dlgFD comme FileDialogDim strFolder en tant que chaîneDim strFileName en tant que chaîneDéfinir dlgFD = Application.FileDialog(msoFileDialogFolderPicker)Si dlgFD.Show = -1 AlorsstrFolder = dlgFD.SelectedItems(1) & Application.PathSeparatorstrFileName = Dir(strDossier & "*.xls*")Faire alors que strFileName ""Définir wb = Workbooks.Open(strFolder & strFileName)strFileName = DirBoucleFin siFin du sous-marin

Vérifier si un classeur est ouvert

Cette procédure testera si un classeur est ouvert :

1234567891011 Sub TestByWorkbookName()Dim wb comme classeurPour chaque wb dans les classeursSi wb.Name = "New Microsoft Excel Worksheet.xls" AlorsMsgBox "Je l'ai trouvé"Exit Sub 'call code ici, nous allons juste quitter pour l'instantFin siProchainFin du sous-marin

Evénement Workbook_Open

Les événements VBA sont des « déclencheurs » qui indiquent à VBA d'exécuter un certain code. Vous pouvez configurer des événements de classeur pour l'ouverture, la fermeture, avant l'enregistrement, après l'enregistrement et plus encore.

Lisez notre tutoriel Workbook_Open Event pour en savoir plus sur l'exécution automatique de macros lorsqu'un classeur est ouvert.

Vous contribuerez au développement du site, partager la page avec vos amis

wave wave wave wave wave