Pfad und Dateiname in Excel trennen
Schritt-für-Schritt-Anleitung
-
FileDialog erstellen: Du kannst den FileDialog verwenden, um eine Datei auszuwählen. Hier ist ein Beispielcode:
Dim dlg As FileDialog
Dim si As Variant
Set dlg = Application.FileDialog(msoFileDialogFilePicker)
With dlg
.AllowMultiSelect = False
.ButtonName = "Bild auswählen"
.Filters.Add "Bilder", "*.gif; *.jpg; *.jpeg; *.bmp"
.Filters.Add "Alle", "*.*"
.FilterIndex = 0
.InitialFileName = ThisWorkbook.path
.InitialView = msoFileDialogViewDetails
.Title = "Meine Bilderdatenbank der Züge"
End With
-
Dateinamen extrahieren: Um nur den Dateinamen aus dem Pfad zu bekommen, kannst du folgenden Code verwenden:
If dlg.Show = True Then
For Each si In dlg.SelectedItems
ActiveCell.Value = Dir(si) ' Extrahiere den Dateinamen
Next
End If
-
Meldung anzeigen: Optional kannst du eine Meldung anzeigen lassen, um zu fragen, ob der Benutzer das Bild übernehmen möchte.
Häufige Fehler und Lösungen
-
Laufzeitfehler '5' bei msoFileDialogViewThumbnail: Dieser Fehler kann auftreten, wenn die Thumbnail-Ansicht nicht verfügbar ist. Verwende stattdessen msoFileDialogViewDetails
, um die Dateien als Liste anzuzeigen.
-
Dateiname wird nicht korrekt extrahiert: Stelle sicher, dass du die Dir
-Funktion korrekt verwendest, um den Dateinamen aus dem Pfad abzurufen.
Alternative Methoden
Eine alternative Methode, um den Dateinamen aus einem Pfad zu extrahieren, besteht darin, die Länge des Pfades zu ermitteln und dann den Text nach dem letzten Backslash zu extrahieren:
Dim i As Integer
i = Len(si)
Do While Mid(si, i, 1) <> "\"
i = i - 1
Loop
si = Right(si, Len(si) - i)
Diese Methode funktioniert gut, wenn du die Funktion excel dateiname aus pfad extrahieren
verwenden möchtest, ohne die Dir
-Funktion.
Praktische Beispiele
Hier ein vollständiges Beispiel, wie du den Dateinamen aus einem Pfad mit VBA extrahieren kannst:
Sub DateinameAusPfad()
Dim dlg As FileDialog
Dim si As Variant
Set dlg = Application.FileDialog(msoFileDialogFilePicker)
With dlg
.AllowMultiSelect = False
.Filters.Add "Bilder", "*.gif; *.jpg; *.jpeg; *.bmp"
.InitialFileName = ThisWorkbook.path
.Title = "Wähle ein Bild"
End With
If dlg.Show = True Then
For Each si In dlg.SelectedItems
MsgBox "Der Dateiname ist: " & Dir(si)
Next
End If
End Sub
Tipps für Profis
-
Verwende Application.PathSeparator
: Anstatt den Backslash \
hart zu kodieren, kannst du Application.PathSeparator
verwenden, um die Codeportabilität zu erhöhen.
-
Fehlerbehandlung einbauen: Füge Fehlerbehandlungsroutinen ein, um unerwartete Probleme während der Ausführung zu vermeiden.
-
Zugriff auf Bilddateien: Um ein Bild aus einem Pfad in einer Access-Datenbank anzuzeigen, kannst du die Methode access bild aus pfad anzeigen
verwenden, um den Pfad zu speichern und das Bild darauf basierend darzustellen.
FAQ: Häufige Fragen
1. Wie kann ich mehrere Dateinamen aus einem Pfad extrahieren?
Du kannst die AllowMultiSelect
-Eigenschaft des FileDialogs auf True
setzen und dann in einer Schleife über dlg.SelectedItems
iterieren.
2. Funktioniert dieser Code in jeder Excel-Version?
Ja, der Code sollte in den meisten modernen Excel-Versionen (Excel 2007 und später) funktionieren, solange VBA unterstützt wird.