Ich habe ein Makro, das einen Benutzer auffordert, mehrere Dateien für die Datenanalyse auszuwählen. Der Benutzer wählt zuerst eine Excel- oder CSV-Datei aus (XLSX, XLS, CSV) und fragt dann nach einer zweiten Datei, jedoch nur nach CSV. Die Absicht des Tools besteht darin, die beiden Datendateien zu einem zu kombinieren.VBA Excel FileDialog zum Setzen/Zurücksetzen von Filtern
In einem Sub, frage ich den Benutzer jeden kompatiblen XLSX, XLS auszuwählen, oder CSV-Dateien mit dem File Code verwendet:
Dim myObj As Object
Dim myDirString As String
Set myObj = Application.FileDialog(msoFileDialogFilePicker)
With myObj
.InitialFileName = "C:\Users\" & Environ$("Username") & "\Desktop"
.Filters.Add "Custom Excel Files", "*.xlsx, *.csv, *.xls"
.FilterIndex = 1
If .Show = False Then MsgBox "Please select Excel file.", vbExclamation: Exit Sub
myDirString = .SelectedItems(1)
End With
Es scheint angemessen zu filtern:
Nachdem diese Datenanalyse abgeschlossen ist, führt der Benutzer eine zweite Sub aus, um eine andere Datei auszuwählen, aber es muss nur eine CSV-Datei sein. So verwende ich diesen Code CSV zu beantragen:
Dim yourObj3 As Object
Dim yourDirString3 As String
Set yourObj3 = Application.FileDialog(msoFileDialogFilePicker)
With yourObj3
.InitialFileName = "C:\Users\" & Environ$("Username") & "\Desktop"
.Filters.Add "CSV Files", "*.csv"
.FilterIndex = 1
If .Show = False Then MsgBox "Please select CSV file.", vbExclamation: Exit Sub
yourDirString3 = .SelectedItems(1)
End With
Das Problem ist die File-Dialog-Box erinnert mich an den ersten Filter (Custom XLS) und sie müssen Sie die Tropfen klicken nur die entsprechenden Filter für CSV zu sehen ...
So ist dies sicherlich für den Benutzer verwirrend sein würde ... ich vermute, ich brauche unsere dass der erste Filter auf „clear“, nachdem der Benutzer das erste Makro abgeschlossen ist. Irgendwelche Vorschläge zu diesem Code, um den ersten Filter zu löschen (oder zurückzusetzen)?
versucht, dies darunter das Hinzufügen, wenn ich gefunden, was ich dachte, eine ähnliche Frage FileDialog persists previous filters war:
With .Filters
.Clear
End With
Aber Ergebnisse in Compile-Fehler: Dies funktioniert in meiner Umgebung
Mit der '.Clear' Methode der' .Filters' Eigenschaft eines 'FileDialog' Objekt funktioniert, so alles, was ich denken kann, ist, dass Sie nicht den' Mit .Filters' gelegt haben in Ihrem 'Mit yourObj3 'blockieren. – YowE3K