2010-05-11 3 views
102

J'ai écrit une macro en tant que add = in. Et j'ai besoin d'obtenir le chemin de la feuille de calcul en cours sur laquelle elle est en cours d'exécution. Comment puis-je faire cela? Comment puis-je obtenir le chemin du fichier (juste le répertoire)?Comment obtenir le chemin de la feuille de calcul en cours dans VBA?

+0

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

Répondre

192

Utilisez Application.ActiveWorkbook.Path uniquement pour le chemin lui-même (sans le nom du classeur) ou Application.ActiveWorkbook.FullName pour le chemin avec le nom du classeur.

+8

Activeworkbook dépend du classeur actif. USe Thisworkbook.path –

+3

Les deux sont utiles dans différentes situations, bien sûr. J'ai pris la question originale pour signifier que la macro résidait dans un classeur de complément (qui serait ThisWorkbook.path), mais nécessaire pour exécuter le code contre d'autres classeurs comme nécessaire par l'utilisateur (qui serait ActiveWorkbook.path). – BradC

+1

Devrait toujours être explicite - si c'est ce classeur, il devrait être application.thisworkbook.path. Si c'est un classeur en cours d'ouverture, le nom doit être défini avec un ensemble, puis application.Variablename.path (ou fullpath, selon). – Selkie

28

toujours agréable d'avoir:

Dim myPath As String  
Dim folderPath As String 

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

Si vous voulez obtenir le chemin du classeur où la macro est en cours d'exécution - utiliser Application.ThisWorkbook.Path.
Application.ActiveWorkbook.Path peut parfois produire des résultats inattendus (par exemple si votre macro bascule entre plusieurs classeurs).

Questions connexes