Excel VBA, FileDialog(msoFileDialogOpen) - Filterung nach Dateityp UND Filename
Hallo Zusammen,
Ich möchte eine gewisse Vorfilterung bei der Dateiauswahl machen.
Hierzu sollte nach FileTyp und einem String im Dateinamen erfolgen. Leider funktioniert derzet nur eine dieser Optionen.
1. Bei untem gezeigtem Code wird nach dem Stringinhalt gefiltert - aber nicht die Dateiedung beachtet
2. wenn ich die Dateitypauswahl nutze ist die Stringfilterung wieder nicht aktiv.
wie kann ich beide Optionen realisieren?
Danke schonmal
Ich möchte eine gewisse Vorfilterung bei der Dateiauswahl machen.
Hierzu sollte nach FileTyp und einem String im Dateinamen erfolgen. Leider funktioniert derzet nur eine dieser Optionen.
1. Bei untem gezeigtem Code wird nach dem Stringinhalt gefiltert - aber nicht die Dateiedung beachtet
2. wenn ich die Dateitypauswahl nutze ist die Stringfilterung wieder nicht aktiv.
Dim Path, Nummer As String
'Pfadauswahl
Path = "C:\Users\Public\Documents\"
'Nummernauswahl
Nummer = ActiveSheet.Range("C7")
'Öffne Auswahldialog
With Application.FileDialog(msoFileDialogOpen)
.AllowMultiSelect = False
.Title = "Protokoll laden"
.Filters.Clear
.Filters.Add "Protokoll", "*.xml", 1
.Filters.Add "Alle Dateien", "*.*"
'.InitialView = msoFileDialogViewDetails
.InitialFileName = Path & "*" & Nummer & "*"
If .Show Then
XMLDATEI = .SelectedItems(1)
End If
End With
wie kann ich beide Optionen realisieren?
Danke schonmal
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 263724
Url: https://administrator.de/contentid/263724
Ausgedruckt am: 22.11.2024 um 22:11 Uhr
6 Kommentare
Neuester Kommentar
Moinsens,
Gruß jodel32
Dim Path, Nummer As String
'Pfadauswahl
Path = "C:\Users\Public\Documents\"
'Nummernauswahl
Nummer = ActiveSheet.Range("C7")
'Öffne Auswahldialog
With Application.FileDialog(msoFileDialogOpen)
.AllowMultiSelect = False
.Title = "Protokoll laden"
.Filters.Clear
.Filters.Add "Protokoll", "*.xml", 1
.Filters.Add "Alle Dateien", "*.*"
.FilterIndex = 1
.InitialFileName = Path & "*" & Nummer & "*" & ".xml"
If .Show Then
XMLDATEI = .SelectedItems(1)
End If
End With
Hallo chef1586,
so wie jodel es geschrieben hat geht es nur wenn der Filter auf *.* steht, weil der Dialog sonst die Dateierweiterung am Ende entfernt.
Mit einem dirty Trick kannst du den Dialog trotzdem dazu zwingen das gewünschte zu machen (Namensfilter + FIlterauswahl), indem du die Dateierweiterung einfach verdoppelst
Grüße Uwe
so wie jodel es geschrieben hat geht es nur wenn der Filter auf *.* steht, weil der Dialog sonst die Dateierweiterung am Ende entfernt.
Mit einem dirty Trick kannst du den Dialog trotzdem dazu zwingen das gewünschte zu machen (Namensfilter + FIlterauswahl), indem du die Dateierweiterung einfach verdoppelst
Dim Path, Nummer As String
'Pfadauswahl
Path = "C:\Users\Public\Documents\"
'Nummernauswahl
Nummer = ActiveSheet.Range("C7")
'Öffne Auswahldialog
With Application.FileDialog(msoFileDialogOpen)
.AllowMultiSelect = False
.Title = "Protokoll laden"
.Filters.Clear
.Filters.Add "Protokoll", "*.xml", 1
.Filters.Add "Alle Dateien", "*.*"
.FilterIndex = 1
.InitialFileName = Path & "*" & Nummer & "*" & ".xml" & ".xml"
If .Show Then
XMLDATEI = .SelectedItems(1)
End If
End With
Zitat von @chef1568:
Was ich allerdings nicht wirklich verstehen kann, da ich ja der Dateityp xml bereits als Filter definiert hatte - dieser aber
nicht ausgewertet wird...
Der Dateinamensfilter im Eingabefeld überschreibt den Dateitypfilter. Kannst du ganz einfach nachprüfen Und wenn dann dort als Name etwas steht wie Was ich allerdings nicht wirklich verstehen kann, da ich ja der Dateityp xml bereits als Filter definiert hatte - dieser aber
nicht ausgewertet wird...
*Nummer*
anstatt *Nummer*.xml
nimmt er alle Dateien mit der Nummer im Namen, egal welches Dateityps, ist leider so.Grüße Uwe