Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Parent Pfad ermitteln

Parent Pfad ermitteln
25.10.2012 10:18:31
pastinake
Hallo!
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

Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Parent Pfad ermitteln
25.10.2012 10:39:36
Kawensmann
Hallo,
Verweis auf die Microsoft Scripting Runtime und dann:
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ß
Kawensmann

Anzeige
AW: Parent Pfad ermitteln
25.10.2012 11:09:48
pastinake
Hallo Kawensmann,
danke,- klar! da war was......
Nur muss ich in meinem Beispiel das FileSystemObject einbinden,- so wie Luschi in der Folge auch geschrieben hat.
Wichtig aber war Dein Gedanke,- denn das war's
Gruß
Bernd

AW: Parent Pfad ermitteln
25.10.2012 10:59:19
Luschi
Hallo
ich mach das immer so:

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
aus klein-Paris

Anzeige
AW: Parent Pfad ermitteln
25.10.2012 11:07:07
pastinake
Hallo Luschi aus Düsseldorf ;-)
danke,- hatte ich schon gemacht.
Das Makro muss transportabel bleiben,- daher ist die Objekterstellung unabdingbar.
Ganz lieben Dank Dir!
Bernd
;

Forumthreads zu verwandten Themen

Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Parent Pfad ermitteln in Excel VBA


Schritt-für-Schritt-Anleitung

Um den übergeordneten Pfad (Parent Path) in Excel VBA zu ermitteln, kannst du folgende Schritte befolgen:

  1. Verweis auf Microsoft Scripting Runtime setzen:

    • Öffne den Visual Basic for Applications (VBA) Editor in Excel (Alt + F11).
    • Gehe zu Extras > Verweise.
    • Setze ein Häkchen bei Microsoft Scripting Runtime.
  2. 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
  3. Verwendung der Funktion in einem Sub:

    Sub test()
       Debug.Print GetParentFolder(ThisWorkbook.Path)
    End Sub
  4. Makro ausführen:

    • Führe das test-Makro aus, um den übergeordneten Pfad zu ermitteln.

Häufige Fehler und Lösungen

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.


Alternative Methoden

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

Praktische Beispiele

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.


Tipps für Profis

  • Nutze die Funktion vba getparentfoldername, um den übergeordneten Pfad effizient zu ermitteln.
  • Achte darauf, dass dein Makro transportabel bleibt, indem du die Objekterstellung wie in den Beispielen zeigst.
  • Vermeide die Verwendung von ChDir ThisWorkbook.Path, da dies den aktuellen Arbeitsordner ändert und unerwartete Ergebnisse liefern kann.

FAQ: Häufige Fragen

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.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige