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.