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

Forumthread: Pfad mit VBA auslesen

Pfad mit VBA auslesen
31.10.2006 11:50:26
Christian
Hallo Forum,
mit dem VBA Befehl
fileToOpen = Application.GetOpenFilename()
bekommen ich den Namen eines in der Box gewählten Files zurück.
Ich benötige jedoch nur den Pfad!
Wie mache ich das? Gibt es dazu einen analogen Befehl oder muss ich den Filenamen aus der Variablen entfernen (wie?),
Oder kann ich den "GetOpen.." Befehl so ändern das er mir nur den Pfad zurückgibt?
Habe schon etliche Variationen des "GetOpen.." Befehls ausprobiert, jedoch ohne Erfolg.
Danke
Gruß Christian
Anzeige

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Pfad mit VBA auslesen
31.10.2006 12:10:36
Rudi
Hallo,
entweder so:
Sub ttt()
Dim strPfad
strPfad = Application.GetOpenFilename
If strPfad <> False Then strPfad = Left(strPfad, InStrRev(strPfad, "\"))
MsgBox strPfad
End Sub

oder so:
Public Type BROWSEINFO
hOwner As Long
pidlRoot As Long
pszDisplayName As String
lpszTitle As String
ulFlags As Long
lpfn As Long
lParam As Long
iImage As Long
End Type
Declare Function SHGetPathFromIDList Lib "shell32.dll" _
Alias "SHGetPathFromIDListA" (ByVal pidl As Long, _
ByVal pszPath As String) As Long
Declare Function SHBrowseForFolder Lib "shell32.dll" _
Alias "SHBrowseForFolderA" (lpBrowseInfo As BROWSEINFO) As Long
Function GetDirectory(Optional Msg) As String
Dim bInfo As BROWSEINFO
Dim Path As String
Dim R As Long, x As Long, pos As Integer
bInfo.pidlRoot = 0&
If IsMissing(Msg) Then
bInfo.lpszTitle = "Wählen Sie bitte einen Ordner aus."
Else
bInfo.lpszTitle = Msg
End If
bInfo.ulFlags = &H1
x = SHBrowseForFolder(bInfo)
Path = Space$(512)
R = SHGetPathFromIDList(ByVal x, ByVal Path)
If R Then
pos = InStr(Path, Chr$(0))
GetDirectory = Left(Path, pos - 1)
Else
GetDirectory = ""
End If
End Function
Sub tt()
Dim strPfad
strPfad = GetDirectory
End Sub

Gruß
Rudi
Anzeige
DANKE! (o.T.)
31.10.2006 12:18:20
Chrsitian
Danke!
;
Anzeige
Anzeige

Infobox / Tutorial

Pfad mit VBA auslesen


Schritt-für-Schritt-Anleitung

Um den Pfad einer Datei in Excel mit VBA auszulesen, kannst Du die folgende Schritt-für-Schritt-Anleitung befolgen:

  1. Öffne den VBA-Editor: Drücke ALT + F11 in Excel.

  2. Füge ein neues Modul hinzu: Klicke auf Einfügen und wähle Modul.

  3. Kopiere den folgenden Code in das Modul:

    Sub PfadAuslesen()
       Dim strPfad As String
       strPfad = Application.GetOpenFilename()
       If strPfad <> "False" Then
           strPfad = Left(strPfad, InStrRev(strPfad, "\"))
           MsgBox "Der Pfad der Datei ist: " & strPfad
       Else
           MsgBox "Keine Datei ausgewählt."
       End If
    End Sub
  4. Führe das Makro aus: Drücke F5 oder gehe über Run > Run Sub/UserForm.

Nun solltest Du den Pfad der ausgewählten Datei als Nachricht sehen.


Häufige Fehler und Lösungen

  • Fehler: "Keine Datei ausgewählt."

    • Lösung: Stelle sicher, dass Du eine Datei im Dialog ausgewählt hast. Der Rückgabewert False tritt auf, wenn der Dialog abgebrochen wird.
  • Fehler: Der Pfad wird nicht korrekt angezeigt.

    • Lösung: Überprüfe, ob Du den Code exakt so eingefügt hast. Achte auf Anführungszeichen und andere Syntaxelemente.

Alternative Methoden

Falls Du nach einer alternativen Methode suchst, um den Speicherort auszulesen, kannst Du die folgende Funktion verwenden, die es Dir ermöglicht, einen Ordner auszuwählen:

Public Type BROWSEINFO
    hOwner As Long
    pidlRoot As Long
    pszDisplayName As String
    lpszTitle As String
    ulFlags As Long
    lpfn As Long
    lParam As Long
    iImage As Long
End Type

Declare Function SHGetPathFromIDList Lib "shell32.dll" _
    Alias "SHGetPathFromIDListA" (ByVal pidl As Long, _
    ByVal pszPath As String) As Long

Declare Function SHBrowseForFolder Lib "shell32.dll" _
    Alias "SHBrowseForFolderA" (lpBrowseInfo As BROWSEINFO) As Long

Function GetDirectory(Optional Msg) As String
    Dim bInfo As BROWSEINFO
    Dim Path As String
    Dim R As Long, x As Long, pos As Integer
    bInfo.pidlRoot = 0
    If IsMissing(Msg) Then
        bInfo.lpszTitle = "Wählen Sie bitte einen Ordner aus."
    Else
        bInfo.lpszTitle = Msg
    End If
    bInfo.ulFlags = &H1
    x = SHBrowseForFolder(bInfo)
    Path = Space$(512)
    R = SHGetPathFromIDList(ByVal x, ByVal Path)
    If R Then
        pos = InStr(Path, Chr$(0))
        GetDirectory = Left(Path, pos - 1)
    Else
        GetDirectory = ""
    End If
End Function

Praktische Beispiele

Hier sind einige praktische Beispiele, wie Du den aktuellen Pfad oder den Pfad der aktuellen Datei auslesen kannst:

  1. Aktueller Pfad der Datei auslesen:

    Sub AktuellerPfad()
       MsgBox "Der aktuelle Pfad ist: " & ThisWorkbook.Path
    End Sub
  2. Pfad einer bestimmten Datei auslesen:

    Sub DateipfadAuslesen()
       Dim dateiPfad As String
       dateiPfad = ThisWorkbook.FullName
       MsgBox "Der Pfad der aktuellen Datei ist: " & dateiPfad
    End Sub

Tipps für Profis

  • Verwende ThisWorkbook.FullName, um den vollständigen Pfad der aktuellen Datei zu erhalten.
  • Wenn Du den Speicherort einer Datei häufig benötigst, speichere den Pfad in einer globalen Variablen.
  • Du kannst auch die Funktion Application.CurrentWorkbook.Path nutzen, um den Pfad der Arbeitsmappe abzufragen.

FAQ: Häufige Fragen

1. Wie kann ich den Pfad auslesen, ohne die Datei auszuwählen? Um den Pfad der aktuellen Datei auszulesen, benutze ThisWorkbook.Path.

2. Gibt es eine Möglichkeit, den Pfad direkt in eine Zelle zu schreiben? Ja, Du kannst den Pfad in eine Zelle schreiben, indem Du folgenden Code verwendest:

Range("A1").Value = ThisWorkbook.Path

3. Kann ich den Pfad auch ohne VBA abfragen? Ja, Du kannst den Pfad der aktuellen Datei in Excel über die Funktion =CELL("filename") abfragen, allerdings erhältst Du dann auch den Dateinamen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige