Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: relative Pfadbezüge, 2 Ordner zurück einen vor

relative Pfadbezüge, 2 Ordner zurück einen vor
24.08.2006 13:33:19
stefanseevetal
Hallo liebe Excel-Experten!
Ich möchte gerne mit relativen Pfadbezügen arbeiten, damit ich die Ordner immer beleibig verschieben kann (bzw. ist dies auf notwendig, da hinundwieder Serverlaufwerkbuchstaben etc. verändert werden).
Ich öffne per VBA andere Dateien z.B. so:
Workbooks.Open Filename:=ThisWorkbook.Path & "\Ausrüstungslisten\ListeM.xls"
oder so (wenn die Datei, aus der ich öffne, in der Verzeichnisstruktur einen Ordner höher liegt):
Workbooks.Open Filename:=ThisWorkbook.Path & "\..\Ausrüstungslisten\ListeM.xls"
Wie aber mache ich es, wenn der Ordner in der Verzerichnisstruktur zwei Ordner höher liegt? Während nämlich das andere hier gezeigte einwandfrei funktioniert, geht folgender Code nicht:
Workbooks.Open Filename:=ThisWorkbook.Path & "\..\..\Ausrüstungslisten\ListeM.xls"
Ich möchte eigentlich nur, dass Excel zum Öffnen der Datei zwei ORdner zurück geht und dann einen wieder hoch (in Ausrüstungslisten) und dort die datei öffnet.
Vielleicht kann mir ja da jemand helfen.
Danke und Gruß,
Stefan
Anzeige

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: relative Pfadbezüge, 2 Ordner zurück einen vor
24.08.2006 13:41:23
Matthias
Hallo Stefan,
du könntest diese Funktion nutzen:

Function TopFolder(ByVal pfad As String) As String
If Right(pfad, 1) = "\" Then
pfad = Left(pfad, Len(pfad) - 1)
End If
On Error Resume Next
TopFolder = Left(pfad, InStrRev(pfad, "\"))
End Function

Dann:

Workbooks.Open Filename:=TopFolder(TopFolder(ThisWorkbook.Path)) & Ausrüstungslisten\ListeM.xls"

Gruß Matthias
Anzeige
Danke, das ist es
24.08.2006 13:45:49
stefanseevetal
Super, vielen Dank Matthias! Danach ahbe ich gesucht
Gruß,
Stefan
;
Anzeige
Anzeige

Infobox / Tutorial

Relative Pfadbezüge in Excel VBA: Zwei Ordner zurück und einen vor


Schritt-für-Schritt-Anleitung

Um in Excel VBA mit relativen Pfadbezügen zu arbeiten und dabei zwei Ordner zurück und einen vor zu navigieren, kannst du die folgende Methode verwenden:

  1. Öffne den VBA-Editor: Drücke ALT + F11, um den VBA-Editor zu öffnen.

  2. Füge ein Modul hinzu: Klicke mit der rechten Maustaste auf "VBAProject (DeinWorkbookName)" > Einfügen > Modul.

  3. Füge den folgenden Code ein:

    Function TopFolder(ByVal pfad As String) As String
       If Right(pfad, 1) = "\" Then
           pfad = Left(pfad, Len(pfad) - 1)
       End If
       On Error Resume Next
       TopFolder = Left(pfad, InStrRev(pfad, "\"))
    End Function
    
    Sub ÖffneDatei()
       Workbooks.Open Filename:=TopFolder(TopFolder(ThisWorkbook.Path)) & "Ausrüstungslisten\ListeM.xls"
    End Sub
  4. Lauf das Makro: Du kannst das Makro ÖffneDatei ausführen, um die Datei zu öffnen.

Diese Methode nutzt die Funktion TopFolder, um den Pfad entsprechend zu navigieren. Mit dieser Technik kannst du flexibel mit Dateien umgehen, ohne dir Gedanken über die genauen Pfade machen zu müssen, was besonders hilfreich ist, wenn du die Dateien oft verschiebst.


Häufige Fehler und Lösungen

  • Fehler: „Datei nicht gefunden“

    • Lösung: Überprüfe, ob der Pfad korrekt ist. Stelle sicher, dass du die richtigen Ordnernamen verwendest und dass die Datei tatsächlich vorhanden ist.
  • Fehler: „Typen nicht übereinstimmend“

    • Lösung: Achte darauf, dass alle Variablen den richtigen Datentyp haben, insbesondere wenn du mit Strings arbeitest.

Alternative Methoden

Eine alternative Methode zum Umgang mit relativen Pfadbezügen ist die Verwendung von Application.ActiveWorkbook.Path. Du kannst den Pfad dynamisch anpassen, um die gewünschte Datei zu erreichen. Beispiel:

Sub ÖffneDateiAlternative()
   Dim relativerPfad As String
   relativerPfad = ThisWorkbook.Path & "\..\..\Ausrüstungslisten\ListeM.xls"
   Workbooks.Open Filename:=relativerPfad
End Sub

Diese Methode ist besonders praktisch, wenn du verschiedene Dateien im gleichen Verzeichnisbaum verwalten musst.


Praktische Beispiele

Ein praktisches Beispiel könnte sein, wenn du mehrere Ausrüstungslisten hast, die in verschiedenen Ordnern gespeichert sind. Du kannst ein Makro erstellen, das beim Öffnen deiner Hauptdatei automatisch die entsprechenden Listen öffnet, basierend auf einem relativen Pfad.

Sub ÖffneMehrereListen()
   Dim listenArray As Variant
   Dim i As Integer
   listenArray = Array("ListeM.xls", "ListeN.xls", "ListeO.xls")

   For i = LBound(listenArray) To UBound(listenArray)
       Workbooks.Open Filename:=ThisWorkbook.Path & "\..\..\Ausrüstungslisten\" & listenArray(i)
   Next i
End Sub

Diese Schleife öffnet alle Listen in einem Rutsch und spart dir Zeit.


Tipps für Profis

  • Nutze die On Error Resume Next Anweisung, um Fehler beim Öffnen von Dateien zu handhaben, die möglicherweise nicht existieren.
  • Dokumentiere deine Pfade im Code, um zukünftige Änderungen zu erleichtern.
  • Teste deine Makros regelmäßig, besonders nach größeren Änderungen an der Ordnerstruktur.

FAQ: Häufige Fragen

1. Wie kann ich sicherstellen, dass mein Pfad immer korrekt ist? Um sicherzustellen, dass dein Pfad korrekt ist, teste ihn regelmäßig und verwende Debugging-Tools, um Variablenwerte zu überprüfen.

2. Was mache ich, wenn ich mehrere Ordner zurück gehen möchte? Du kannst die Funktion TopFolder entsprechend mehrfach aufrufen, um mehrere Ebenen zurück zu navigieren, oder du kannst den Pfad direkt anpassen.

3. Funktioniert das auch in älteren Excel-Versionen? Ja, die gezeigten VBA-Methoden sind in den meisten Excel-Versionen verfügbar, solange du VBA verwenden kannst.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige