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

Relative Pfadangabe bei VBA

Forumthread: Relative Pfadangabe bei VBA

Relative Pfadangabe bei VBA
19.01.2005 14:05:04
Dennis
Hallo an alle,
habe ein Problem mit der Pfadangabe, kann man irgendwie in VBA
auch relative Pfade verwenden?
So in etwas soll das mal aussehen:
UserForm1.PassPhoto = LoadPicture("images/Default.jpg")
Geht aber nicht, der will den absoluten Pfad.
Kann man den irgendwie den aktuellen Pfad in eine String-Variable speichern, in dem das aktuelle Workbook lieg.
Mit Application.Path gibt er einem nur den Ordner an in dem Excel installiert ist, da sich aber der Ordner des Workbooks und den den Bildern immer ändert, muss ich
entweder einen relative Pfad verwenden oder irdendwie das Aktuelle Verzeichnis auslesen, mit dem ich mir den den Pfad zusammenbasteln kann.
Das kann doch nicht sein, das VBA so billig ist, das man immer aboslute Pfade angeben muss.
Vor der Absoluten-Pfad-Angabe hab mich mein Vater immer gewarnt, und ich meine Kinder :-)
Mfg,
Dennis
Anzeige

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

Betreff
Datum
Anwender
Anzeige
CurDir ?
berrnd
hallo dennis
Public

Sub w()
MsgBox CurDir
End Sub

oder wenn du das verzeichniss auswählen willst:
Public

Sub w()
Application.GetOpenFilename
MsgBox CurDir
End Sub

bernd
DANKE CurDir ?
Dennis
Danke, klappt.
MfG Dennis
Anzeige
thisworkbook.path ? o.T.
bernd
gern geschehen o.T.
bernd
;
Anzeige

Infobox / Tutorial

Relative Pfadangabe in Excel VBA effektiv nutzen


Schritt-für-Schritt-Anleitung

  1. Aktuelles Verzeichnis ermitteln: Du kannst das aktuelle Verzeichnis mit der Funktion CurDir in VBA abfragen. Dies gibt dir den Ordner zurück, in dem sich deine Arbeitsmappe befindet.

    Sub aktuellesVerzeichnis()
       MsgBox CurDir
    End Sub
  2. Verzeichnis auswählen: Wenn du ein Verzeichnis auswählen möchtest, um den Pfad dynamisch zu bestimmen, kannst du Application.GetOpenFilename verwenden. Hier ein Beispiel:

    Sub pfadAuswaehlen()
       Dim datei As String
       datei = Application.GetOpenFilename()
       If datei <> "False" Then
           MsgBox "Ausgewählter Pfad: " & CurDir
       End If
    End Sub
  3. Relative Pfadangabe nutzen: Um einen relativen Pfad in deiner Anwendung zu verwenden, kannst du den Pfad zum aktuellen Verzeichnis mit dem gewünschten Unterordner kombinieren. Beispiel:

    UserForm1.PassPhoto = LoadPicture(ThisWorkbook.Path & "\images\Default.jpg")

Hierbei wird ThisWorkbook.Path verwendet, um den Pfad der betreffenden Arbeitsmappe zu ermitteln und mit dem Unterordner "images" zu kombinieren. Dies ermöglicht die Verwendung eines relativen Pfades.


Häufige Fehler und Lösungen

  • Fehler: "Datei nicht gefunden" beim Laden des Bildes.

    • Lösung: Überprüfe den Pfad und stelle sicher, dass die Datei im angegebenen Verzeichnis vorhanden ist. Achte darauf, dass der Pfad korrekt zusammengesetzt ist, z.B. ThisWorkbook.Path & "\images\Default.jpg".
  • Fehler: Application.Path liefert den falschen Ordner.

    • Lösung: Verwende ThisWorkbook.Path, um den Pfad der aktuellen Arbeitsmappe zu erhalten.

Alternative Methoden

Du kannst auch die FileDialog-Methode verwenden, um dem Benutzer die Möglichkeit zu geben, einen Ordner auszuwählen. Hier ein Beispiel:

Sub folderAuswaehlen()
    Dim fd As FileDialog
    Set fd = Application.FileDialog(msoFileDialogFolderPicker)

    If fd.Show = -1 Then
        MsgBox "Ausgewählter Ordner: " & fd.SelectedItems(1)
    End If
End Sub

Praktische Beispiele

Hier ist ein einfaches Beispiel, das zeigt, wie du ein Bild von einem relativen Pfad laden kannst:

Sub BildLaden()
    Dim bildPfad As String
    bildPfad = ThisWorkbook.Path & "\images\Default.jpg"

    ' Überprüfen, ob die Datei existiert
    If Dir(bildPfad) <> "" Then
        UserForm1.PassPhoto = LoadPicture(bildPfad)
    Else
        MsgBox "Bild nicht gefunden: " & bildPfad
    End If
End Sub

Tipps für Profis

  • Nutze immer ThisWorkbook.Path, um dynamische Pfade zu erstellen, besonders in Projekten, die auf verschiedenen Rechnern verwendet werden.
  • Vermeide absolute Pfadangaben in deinem Code, um die Portabilität deiner VBA-Anwendungen zu erhöhen.
  • Verwende Fehlerbehandlungsroutinen, um sicherzustellen, dass der Benutzer über fehlende Dateien oder Verzeichnisse informiert wird.

FAQ: Häufige Fragen

1. Wie kann ich den Pfad einer Datei in einer Variablen speichern?
Du kannst die Funktion Application.GetOpenFilename verwenden, um den Benutzer eine Datei auswählen zu lassen, und den Pfad in einer Variablen speichern.

2. Was ist der Unterschied zwischen CurDir und ThisWorkbook.Path?
CurDir gibt das aktuelle Arbeitsverzeichnis zurück, während ThisWorkbook.Path den Pfad der aktiven Arbeitsmappe angibt. Für die Arbeit mit Dateien in Bezug auf die Arbeitsmappe ist ThisWorkbook.Path die bessere Wahl.

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