Ce didacticiel montrera comment obtenir et définir le nom du classeur dans VBA.
Nous pouvons obtenir ou définir le nom du classeur actif dans VBA, ou parcourir tous les classeurs ouverts dans Excel et obtenir ou définir le nom de chacun d'eux à l'aide d'une boucle VBA.
Obtenir le nom du classeur
Pour obtenir le nom du classeur actif, nous devons utiliser la propriété name de l'objet classeurs.
12345 | Sub GetWorkbookName()Dim strWBName en tant que chaînestrWBName = ActiveWorkbook.NameMsgBox strWBNameFin du sous-marin |
Si nous devions exécuter le code ci-dessus, nous verrions une boîte de message apparaître à l'écran avec le nom du classeur actif.
Pour parcourir tous les classeurs actifs et renvoyer les noms des classeurs à Excel, nous pouvons exécuter le code suivant :
1234567 | Sub GetWorkbookNames()Dim wb comme classeurPour chaque wb dans les classeursActiveCell = wb.NomActiveCell.Offset(1, 0).SélectionnerProchainFin du sous-marin |
Les exemples ci-dessus incluront l'extension du fichier (par exemple xlsx). Si vous ne souhaitez pas inclure l'extension, nous pouvons utiliser quelques méthodes pour obtenir uniquement le nom de fichier du classeur.
Obtenir le nom du classeur sans extension
Nous pouvons utiliser les fonctions LEFT et INSTR pour supprimer tous les caractères après le point dans le nom du fichier :
12345 | Sub GetWorkbookName()Dim strWBName en tant que chaînestrWBName = Gauche(ActiveWorkbook.Name, InStr(ActiveWorkbook.Name, ".") - 1)MsgBox strWBNameFin du sous-marin |
Nous pouvons utiliser les fonctions LEFT et LEN pour supprimer 5 caractères à la fin du nom du fichier :
12345 | Sub GetWorkbookName()Dim strWBName en tant que chaînestrWBName = Gauche(ActiveWorkbook.Name, Len(ActiveWorkbook.Name) - 55)MsgBox strWBNameFin du sous-marin |
Définition du nom du classeur
Pour définir le nom d'un classeur dans VBA, nous utilisons toujours la propriété Name du classeur, mais nous ne pouvons pas utiliser cette méthode pour modifier le nom du classeur actif. Cela est dû au fait que le classeur actif est ouvert et qu'une erreur d'accès au fichier se produira. Pour surmonter cela, nous pouvons enregistrer le fichier sous un nouveau nom, puis supprimer l'ancien fichier.
12345678910 | Public Sub SetWorkbookName()Dim strPath en tant que chaîneDim strNewName en tant que chaîneDim strOldName en tant que chaînestrOldName = ActiveWorkbook.NamestrNewName = InputBox("Veuillez entrer un nouveau nom pour le classeur")strPath = ActiveWorkbook.PathActiveWorkbook.SaveAs strPath & "/" & strNewNameTuez strPath & "/" & strOldNameFin du sous-marin |
Pour renommer un classeur qui n'est pas ouvert, nous pouvons utiliser la méthode Name.
123 | Public Sub RenameWorkbook()Nommez "C:\Data\MyFile.xlsx" comme "C:\Data\MyNewFile.xlsx"Fin du sous-marin |