VBA Travailler avec des classeurs (l'objet Workbook)

Ce guide vous présentera comment travailler avec le Objet classeur en VBA.

L'objet classeur

Tout d'abord, pour interagir avec les classeurs dans VBA, vous devez comprendre les Objet classeur.

Avec l'objet classeur, vous pouvez référencer des classeurs par leur nom comme ceci :

1 Classeurs("Book2.xlsm").Activer

Cependant, ce code ne fonctionnera que si le classeur est ouvert. Si le classeur est fermé, vous devrez fournir le chemin complet du classeur :

1 Workbooks.Open ("C:\Users\StevePC2\Downloads\book2.xlsm")

Au lieu de taper le chemin complet, si votre classeur souhaité se trouve dans le même répertoire que le classeur où votre code est stocké, vous pouvez utiliser ce code de ligne pour ouvrir le classeur :

1 Workbooks.Open (ThisWorkbook.Path & "\book2.xlsm")

Cela utilise l'objet ThisWorkbook dont nous parlerons dans la section suivante.

Numéro d'index du classeur

Enfin, vous pouvez référencer les classeurs par leur « numéro d'index ». Le numéro d'index d'un classeur correspond à l'ordre dans lequel le classeur a été ouvert (techniquement, c'est la position du classeur dans la collection de classeurs).

1 Classeurs(1).Activer

Ceci est utile si vous voulez faire quelque chose comme fermer le premier (ou le dernier) classeur ouvert.

Activer Workbook, ActiveWorkbook et ThisWorkbook

Si un classeur est PAS ACTIF, vous pouvez accéder aux objets du classeur comme ceci :

1 Classeurs("Book2.xlsm").Sheets("Sheet1").Range("A1").value = 1

Cependant, si le classeur est actif, vous pouvez omettre l'objet classeur :

1 Sheets("Sheet1").Range("A1").value = 1

Et si vous souhaitez interagir avec la feuille active du classeur, vous pouvez également omettre l'objet Sheets :

1 Plage ("A1").valeur = 1

Activer le classeur

Pour activer un classeur, utilisez le Activer la méthode.

1 Classeurs("Book2.xlsm").Activer

Vous pouvez maintenant interagir avec les objets de Book2 sans indiquer explicitement le nom du classeur.

Cahier de travail actif

Les Cahier de travail actif objet fait toujours référence au classeur actif. Ceci est utile si vous souhaitez affecter l'ActiveWorkbook à une variable à utiliser plus tard.

12 Dim wb comme classeurDéfinir wb = ActiveWorkbook

Ce classeur

Les Ce classeur object fait toujours référence au classeur dans lequel le code en cours d'exécution est stocké. Pour activer ThisWorkbook, utilisez cette ligne de code :

1 Ce classeur.Activer

Ouvrir le classeur

Pour ouvrir un classeur, utilisez le Méthode ouverte:

1 Workbooks.Open ("C:\Users\StevePC2\Downloads\book2.xlsm")

Le classeur nouvellement ouvert deviendra toujours le Cahier de travail actif, vous permettant d'interagir facilement avec celui-ci.

1 ActiveWorkbook.Enregistrer

La méthode Open a plusieurs autres arguments, vous permettant d'ouvrir en lecture seule, d'ouvrir un classeur protégé par mot de passe, etc. Il est couvert ici dans notre article sur l'ouverture / la fermeture des classeurs.

Ouvrir et affecter à une variable

Vous pouvez également ouvrir un classeur et l'affecter à une variable en même temps :

12 Dim wb comme classeurDéfinir wb = Workbooks.Open("C:\Users\StevePC2\Downloads\book2.xlsm")

Ouvrir la boîte de dialogue de fichier

Vous pouvez également déclencher la boîte de dialogue Ouvrir un fichier comme ceci :

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

Créer un nouveau classeur (ajouter)

Cette ligne de code va créer un nouveau classeur :

1 Classeurs.Ajouter

Le nouveau classeur devient maintenant le Cahier de travail actif, vous permettant d'interagir avec lui (par exemple, enregistrer le nouveau classeur).

Ajouter un nouveau classeur à la variable

Vous pouvez également ajouter un nouveau classeur directement à une variable :

12 Dim wb comme classeurDéfinir wb = Workbooks.Add

Fermer le classeur

Fermer et enregistrer

Pour fermer un classeur avec enregistrement, utilisez le Méthode de fermeture avec Sauvegarder les modifications défini sur VRAI :

1 ActiveWorkbook.Close SaveChanges:=True

Fermer sans enregistrer

Pour fermer sans enregistrer, définissez Sauvegarder les modifications égal à FAUX :

1 ActiveWorkbook.Close SaveChanges:=False

Enregistrer le classeur sous

Les Méthode SaveAs est utilisé pour enregistrer un classeur sous.

Pour enregistrer un classeur sous un nouveau nom, dans le même répertoire, vous pouvez impliquer ceci :

1 ActiveWorkbook.SaveAs "nouveau"

où « nouveau » est le nouveau nom de fichier.

Pour enregistrer un classeur dans un nouveau répertoire avec une extension de fichier spécifique, spécifiez simplement le nouveau répertoire et le nom de fichier :

1 ActiveWorkbook.SaveAs "C:\Users\StevePC2\Downloads\new.xlsm"

Autres exemples de classeur VBA

Nom du classeur

Pour obtenir le nom d'un classeur :

1 MsgBox ActiveWorkbook.Name

Protéger le classeur

Pour protéger la structure du classeur de la modification, vous pouvez utiliser le Méthode de protection (mot de passe facultatif) :

1 Classeurs("book1.xlsm").Protéger le "mot de passe"

Pour déprotéger un classeur, utilisez le Déprotéger la méthode:

1 Classeurs("book1.xlsm").Déprotéger le "mot de passe"

Parcourir tous les classeurs ouverts

Pour parcourir tous les classeurs ouverts :

123456789 Sub LoopThroughWBs()Dim wb comme classeurPour chaque wb dans les classeursMsgBox wb.NameWb suivantFin du sous-marin

Événement d'activation du classeur

Vous pouvez exécuter du code chaque fois qu'un classeur spécifique est ouvert avec le Événement d'ouverture de classeur.

Placez cette procédure dans le module ThisWorkbook de votre classeur :

123 Sous-classeur privé_Open()Sheets("sheet1").ActiverFin du sous-marin

Cette procédure activera Feuille1 chaque fois que le classeur est ouvert.

wave wave wave wave wave