Comment obtenir le chemin de la feuille de calcul actuelle dans VBA?


141

J'ai écrit une macro en tant que complément et j'ai besoin d'obtenir le chemin de la feuille de calcul actuelle sur laquelle elle est exécutée. Comment puis-je faire cela? Comment obtenir le chemin du fichier (uniquement le répertoire)?


voulez-vous dire que, étant donné une feuille de calcul, vous voulez connaître le dossier dans lequel le classeur parent est enregistré?
Mathias

Réponses:


264

Utilisez Application.ActiveWorkbook.Pathuniquement pour le chemin d'accès lui-même (sans le nom du classeur) ou Application.ActiveWorkbook.FullNamepour le chemin d' accès avec le nom du classeur.


24
Le classeur actif dépend du classeur actif. Utilisez Thisworkbook.path
Alwyn Miranda

6
Les deux sont bien entendu utiles dans différentes situations. J'ai pris la question d'origine pour signifier que la macro résidait dans un classeur de complément (qui serait ThisWorkbook.path), mais devait exécuter du code sur d'autres classeurs selon les besoins de l'utilisateur (qui serait ActiveWorkbook.path).
BradC

2
Doit toujours être explicite - s'il s'agit de ce classeur, il doit s'agir de application.thisworkbook.path. S'il s'agit d'un classeur en cours d'ouverture, le nom doit être défini avec un ensemble, puis application.Variablename.path (ou fullpath, selon).
Selkie

@Selkie Si le code lui-même ouvre le classeur, alors bien sûr. Mais s'il s'agit simplement d'une macro d'assistance qui réside dans un classeur de complément et qui doit fonctionner sur le classeur que l'utilisateur a actuellement ouvert lorsqu'il appelle la macro, alors ActiveWorkbookc'est ce qui est nécessaire.
BradC

3
Excel.ActiveWorkbook.Pathne fonctionne que si le fichier a été enregistré au moins une fois. De plus, si le fichier n'a jamais été enregistré, Excel.ActiveWorkbook.FullNamerenvoie uniquement le nom du fichier. Cela peut être une bonne idée de vérifier si le classeur a déjà été enregistré .
ChrisB

37

Toujours agréable d'avoir:

Dim myPath As String     
Dim folderPath As String 

folderPath = Application.ActiveWorkbook.Path    
myPath = Application.ActiveWorkbook.FullName

27

Si vous souhaitez obtenir le chemin du classeur à partir duquel la macro est exécutée, utilisez Application.ThisWorkbook.Path.
Application.ActiveWorkbook.Pathpeut parfois produire des résultats inattendus (par exemple, si votre macro bascule entre plusieurs classeurs).


En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.