我有一個宏,要求用戶選擇多個文件進行數據分析。用戶首先選擇一個Excel或CSV文件(XLSX,XLS,CSV),然後請求第二個文件但僅CSV。該工具的目的是將兩個數據文件合併爲一個。VBA Excel FileDialog設置/重置過濾器
在一個小組,我要求用戶選擇任何兼容XLSX,XLS,或使用FileDialog的代碼CSV文件:
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
這似乎是適當的篩選:
完成此數據分析後,用戶運行第二個子選擇另一個文件,但它只能是CSV文件。所以我用這個代碼來請求CSV:
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
的問題是FileDialog的會記住第一個過濾器(自定義XLS),他們需要點擊下拉菜單,查看CSV只有...
適當的過濾器所以這肯定會造成用戶困惑......我猜我需要「明確」我們的用戶後,首先過濾器完成第一個宏。關於該代碼的任何建議,以清除(或重置)第一個過濾器?
嘗試添加此下方,當我發現了我認爲是一個類似的問題FileDialog persists previous filters:
With .Filters
.Clear
End With
但結果編譯錯誤:無效的或不合格的參考
使用'FileDialog'對象的作品'.Filters'屬性的'.Clear'方法,因此,所有我能想到的是你沒有把'隨着.Filters'內你的'隨着yourObj3 '塊。 – YowE3K