Ich möchte gerne eine Textdatei eine Ebene über ThisWorkbook.Path anlegen.
(Open "Pfad" For Output As #1)
Kann ich den Pfad abfragen, oder muss ich temporär mit ChDir ".." arbeiten?
Lieben Dank aus klein Paris
Bernd
Function GetParentFolder(strPath) As String
Dim fso As New FileSystemObject
If Len(strPath) > 0 Then
GetParentFolder = fso.GetParentFolderName(strPath)
End If
End Function
Sub test()
Debug.Print GetParentFolder(ThisWorkbook.Path)
End Sub
Gruß
Option Explicit
Sub test_1()
Dim strPfad As String
strPfad = ThisWorkbook.Path
If strPfad = "" Then
'Datei noch nicht gespeichert
ElseIf Len(strPfad) = 2 Then
'Datei befindet sich im Root-Verzeichnis (z.B.: 'C:'
Else
strPfad = Left(strPfad, InStrRev(strPfad, "\", -1, vbTextCompare) - 1)
End If
Debug.Print strPfad
End Sub
Das Beispiel von Kawensmann solltest Du so abändern, wenn der explizite Verweis auf FSO nicht gesetzt ist.
Function GetParentFolder(strPath) As String
Dim fso As Object
Set fso = CreateObject("Scripting.FileSystemObject")
If Len(strPath) > 0 Then
GetParentFolder = fso.GetParentFolderName(strPath)
End If
End Function
Sub test()
Dim strPfad As String
strPfad = GetParentFolder(ThisWorkbook.Path)
If strPfad = "" Then
'Datei befindet sich im Root-Verzeichnis (z.B.: 'C:'
Else
Debug.Print strPfad
End If
End Sub
Gruß von Luschi
Um den übergeordneten Pfad (Parent Path) in Excel VBA zu ermitteln, kannst du folgende Schritte befolgen:
Verweis auf Microsoft Scripting Runtime setzen:
Extras
> Verweise
.Microsoft Scripting Runtime
.Funktion zum Ermitteln des übergeordneten Pfades erstellen:
Function GetParentFolder(strPath As String) As String
Dim fso As New FileSystemObject
If Len(strPath) > 0 Then
GetParentFolder = fso.GetParentFolderName(strPath)
End If
End Function
Verwendung der Funktion in einem Sub:
Sub test()
Debug.Print GetParentFolder(ThisWorkbook.Path)
End Sub
Makro ausführen:
test
-Makro aus, um den übergeordneten Pfad zu ermitteln.Fehler: "Typ nicht definiert"
Lösung: Stelle sicher, dass du den Verweis auf Microsoft Scripting Runtime
korrekt gesetzt hast.
Fehler: "Datei befindet sich im Root-Verzeichnis"
Lösung: Überprüfe den Pfad. Wenn der Pfad nur zwei Zeichen hat (z.B. C:
), bedeutet dies, dass sich die Datei im Root-Verzeichnis befindet.
Falls du keinen Verweis auf Microsoft Scripting Runtime
setzen möchtest, kannst du die folgende Methode verwenden, um den übergeordneten Pfad manuell zu ermitteln:
Sub GetParentPathAlternative()
Dim strPfad As String
strPfad = ThisWorkbook.Path
If strPfad <> "" And Len(strPfad) > 2 Then
strPfad = Left(strPfad, InStrRev(strPfad, "\", -1, vbTextCompare) - 1)
End If
Debug.Print strPfad
End Sub
Ein praktisches Beispiel zur Verwendung von GetParentFolder
könnte so aussehen:
Sub CreateTextFileInParent()
Dim parentPath As String
parentPath = GetParentFolder(ThisWorkbook.Path)
If parentPath <> "" Then
Open parentPath & "\example.txt" For Output As #1
Print #1, "Dies ist eine Beispieltextdatei."
Close #1
Else
MsgBox "Der übergeordnete Pfad konnte nicht ermittelt werden."
End If
End Sub
Dieses Beispiel zeigt, wie du eine Textdatei im übergeordneten Verzeichnis erstellen kannst.
vba getparentfoldername
, um den übergeordneten Pfad effizient zu ermitteln.ChDir ThisWorkbook.Path
, da dies den aktuellen Arbeitsordner ändert und unerwartete Ergebnisse liefern kann.1. Wie kann ich den übergeordneten Pfad ohne ein FileSystemObject ermitteln?
Du kannst die Funktion InStrRev
verwenden, um den letzten Backslash zu finden und den Pfad manuell zu kürzen.
2. Ist das Erstellen eines Verzeichnisses im übergeordneten Pfad möglich?
Ja, du kannst die Methode excel vba create directory
verwenden, um ein neues Verzeichnis im übergeordneten Pfad zu erstellen, nachdem du ihn ermittelt hast.
Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden
Suche nach den besten AntwortenEntdecke unsere meistgeklickten Beiträge in der Google Suche
Top 100 Threads jetzt ansehen