Wie erhalte ich den Pfad des aktuellen Arbeitsblatts in VBA?


141

Ich habe ein Makro als Add-In geschrieben und muss den Pfad des aktuellen Arbeitsblatts abrufen, auf dem es ausgeführt wird. Wie mache ich das? Wie erhalte ich den Dateipfad (nur das Verzeichnis)?


Meinen Sie damit, dass Sie anhand eines Arbeitsblatts wissen möchten, in welchem ​​Ordner die übergeordnete Arbeitsmappe gespeichert ist?
Mathias

Antworten:


264

Verwenden Sie Application.ActiveWorkbook.Pathnur für den Pfad selbst (ohne den Arbeitsmappennamen) oder Application.ActiveWorkbook.FullNamefür den Pfad mit dem Arbeitsmappennamen.


24
Die Arbeitsmappe hängt davon ab, welche Arbeitsmappe aktiv ist. USe Thisworkbook.path
Alwyn Miranda

6
Beides ist natürlich in unterschiedlichen Situationen nützlich. Ich habe die ursprüngliche Frage so verstanden, dass sich das Makro in einer Add-In-Arbeitsmappe befand (dies wäre ThisWorkbook.path), aber Code für andere Arbeitsmappen ausführen musste, wie vom Benutzer benötigt (dies wäre ActiveWorkbook.path).
BradC

2
Sollte immer explizit sein - wenn es sich um diese Arbeitsmappe handelt, sollte es application.thisworkbook.path sein. Wenn eine Arbeitsmappe geöffnet wird, sollte der Name mit einem Satz definiert werden, dann application.Variablename.path (oder fullpath, je nachdem).
Selkie

@ Selkie Wenn der Code selbst die Arbeitsmappe öffnet, dann sicher. Wenn es sich jedoch lediglich um ein Hilfsmakro handelt, das sich in einer Add-In-Arbeitsmappe befindet und mit der Arbeitsmappe arbeiten muss, die der Benutzer derzeit geöffnet hat, wenn er das Makro aufruft, ActiveWorkbookist dies erforderlich.
BradC

3
Excel.ActiveWorkbook.Pathfunktioniert nur, wenn die Datei mindestens einmal gespeichert wurde. Wenn die Datei noch nie gespeichert wurde, wird Excel.ActiveWorkbook.FullNamenur der Dateiname zurückgegeben. Es könnte eine gute Idee sein, zu überprüfen, ob die Arbeitsmappe jemals gespeichert wurde .
ChrisB

37

Immer schön zu haben:

Dim myPath As String     
Dim folderPath As String 

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

27

Wenn Sie den Pfad der Arbeitsmappe abrufen möchten, von der aus das Makro ausgeführt wird, verwenden Sie Application.ThisWorkbook.Path.
Application.ActiveWorkbook.Pathkann manchmal zu unerwarteten Ergebnissen führen (z. B. wenn Ihr Makro zwischen mehreren Arbeitsmappen wechselt).


Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.