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.
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 .
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).
Antworten:
Verwenden Sie
Application.ActiveWorkbook.Path
nur für den Pfad selbst (ohne den Arbeitsmappennamen) oderApplication.ActiveWorkbook.FullName
für den Pfad mit dem Arbeitsmappennamen.quelle
ActiveWorkbook
ist dies erforderlich.Excel.ActiveWorkbook.Path
funktioniert nur, wenn die Datei mindestens einmal gespeichert wurde. Wenn die Datei noch nie gespeichert wurde, wirdExcel.ActiveWorkbook.FullName
nur der Dateiname zurückgegeben. Es könnte eine gute Idee sein, zu überprüfen, ob die Arbeitsmappe jemals gespeichert wurde .Immer schön zu haben:
quelle
Wenn Sie den Pfad der Arbeitsmappe abrufen möchten, von der aus das Makro ausgeführt wird, verwenden Sie
Application.ThisWorkbook.Path
.Application.ActiveWorkbook.Path
kann manchmal zu unerwarteten Ergebnissen führen (z. B. wenn Ihr Makro zwischen mehreren Arbeitsmappen wechselt).quelle
Der schnellste Weg
quelle