Live-Forum - Die aktuellen Beiträge
Datum
Titel
17.10.2025 10:28:49
16.10.2025 17:40:39
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Pfad und Dateiname trennen

Pfad und Dateiname trennen
09.12.2004 11:10:09
Justus
Hi,
über einen FileDialog (Application.FileDialog(msoFileDialogFilePicker) slektiere ich eine Datei - funkt auch!
WIe kann ich jetzt diesen Eintrag (SelectedItems) so bearbeiten, dass ich mit vba nicht den ganzen Pfad inkl. Datei erhalte (z.B.: E:\Sonstiges\camel_26.jpg) sondern nur camel_26.jpg?
Mein bisheriger Code:


Dim dlg As FileDialog
Dim si As Variant
Set dlg = Application.FileDialog(msoFileDialogFilePicker)
With dlg
'Darf der User mehrere Dateien auswählen Nein
.AllowMultiSelect = False
'Name des Buttons des Dialogs
.ButtonName = "Bild auswählen"
'FIlter, welche Dateien darf er auswählen
.Filters.Add "Bilder", "*.gif; *.jpg; *.jpeg; *.bmp"
.Filters.Add "Alle", "*.*"
.FilterIndex = 0
'Welches Verzeichnis soll geöffnet werden
.InitialFileName = ThisWorkbook.path
'Anzeige des Dialogs - die Dateien als Thumbnail
.InitialView = msoFileDialogViewDetails
'Titel halt
.Title = "Meine Bilderdatenbank der Züge"
End With
If dlg.Show = True Then

'Die ABfrage für den selektierten Eintrag
For Each si In dlg.SelectedItems

If MsgBox("Soll dieses Bild - " & si & " - übernommen werden?", vbYesNo + vbQuestion, "Abfrage...!") = vbYes Then
ActiveCell.Value = si
Else
MsgBox "Die Aktion wurde abgebrochen", vbCritical, "Abbruch...!"
Exit Sub
End If

Next

End If
End Sub


BTW: msoFileDialogViewThumbnail funktioerniert nicht = Laufzeitfehler '5' why?
Danke für die HIlfe
Justus
Anzeige

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Pfad und Dateiname trennen
Josef
Halo Justus!
Den Dateinamen erhälst du so:
Right(si, InStr(1, StrReverse(si), "\") - 1)
Gruß Sepp
AW: Pfad und Dateiname trennen
09.12.2004 11:23:36
Justus
super.. danke schön
Justus
AW: Pfad und Dateiname trennen
Ingolf
Hallo Justus,
einfach hinter dem letzten Backslash abschneiden, z. B. so:
Dim i As Integer
i = Len(si)
Do While Mid(si, i, 1) "\"
i = i - 1
Loop
si = Right(si, Len(si) - i)
Gruß Ingolf
Anzeige
AW: Pfad und Dateiname trennen
09.12.2004 11:24:03
Justus
prima, danke für den Tip
Justus
AW: Pfad und Dateiname trennen
UweD
Hallo
...
For Each si In dlg.SelectedItems
si = Dir(si)
If MsgBox("Soll dieses Bild - " & si & " - übernommen werden?", vbYesNo + vbQuestion, "Abfrage...!") = vbYes Then
...
AW: Pfad und Dateiname trennen
09.12.2004 11:25:55
Justus
KLasse, dachte gar nicht, dass soooo kurz auch geht ;-)
Danke
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Pfad und Dateiname in Excel trennen


Schritt-für-Schritt-Anleitung

  1. 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
  2. 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
  3. 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.

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