Come ottenere il percorso del foglio di lavoro corrente in VBA?


141

Ho scritto una macro come componente aggiuntivo e devo ottenere il percorso del foglio di lavoro corrente su cui viene eseguito. Come faccio a fare questo? Come posso ottenere il percorso del file (solo la directory)?


vuoi dire che, dato un foglio di lavoro, vuoi conoscere la cartella in cui è salvata la cartella di lavoro principale?
Mathias,

Risposte:


264

Utilizzare Application.ActiveWorkbook.Pathsolo per il percorso stesso (senza il nome della cartella di lavoro) o Application.ActiveWorkbook.FullNameper il percorso con il nome della cartella di lavoro.


24
La cartella di lavoro attiva dipende dalla cartella di lavoro attiva. Usa Thisworkbook.path
Alwyn Miranda,

6
Entrambi sono utili in diverse situazioni, ovviamente. Ho preso la domanda originale per indicare che la macro risiedeva in una cartella di lavoro aggiuntiva (che sarebbe ThisWorkbook.path), ma dovevo eseguire il codice su altre cartelle di lavoro come richiesto dall'utente (che sarebbe ActiveWorkbook.path).
BradC

2
Dovrebbe essere sempre esplicito: se si tratta di questa cartella di lavoro, dovrebbe essere application.thisworkbook.path. Se si sta aprendo una cartella di lavoro, il nome deve essere definito con un set, quindi application.Variablename.path (o fullpath, a seconda).
Selkie,

@Selkie Se il codice stesso apre la cartella di lavoro, allora certo. Ma se questa è semplicemente una macro di supporto che risiede in una cartella di lavoro aggiuntiva e deve operare su qualsiasi cartella di lavoro che l'utente ha attualmente aperto quando invoca la macro, allora ActiveWorkbookè ciò che è necessario.
BradC

3
Excel.ActiveWorkbook.PathFunziona solo se il file è stato salvato almeno una volta. Inoltre, se il file non è mai stato salvato, Excel.ActiveWorkbook.FullNamerestituisce solo il nome del file. Potrebbe essere una buona idea controllare se la cartella di lavoro è mai stata salvata .
ChrisB,

37

Sempre bello avere:

Dim myPath As String     
Dim folderPath As String 

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

27

Se si desidera ottenere il percorso della cartella di lavoro da cui viene eseguita la macro, utilizzare Application.ThisWorkbook.Path.
Application.ActiveWorkbook.Patha volte può produrre risultati imprevisti (ad es. se la macro passa da più cartelle di lavoro).


Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.