2014-10-08 92 views
1

我正在寫一個涉及從文件夾中獲取.csv文件的宏。宏要求用戶輸入文件夾路徑,輸入後,它將獲取文件夾中的所有.csv文件,並將其放在工作簿中。如何將自定義搜索過濾器添加到我的方法?

我想要宏詢問用戶他們想要加載到工作簿的擴展名。

例如,某些文件被命名爲Chan_41-103.csv,Chan_41-109.csv和Chan_44-103.csv。因此,如果有方法向用戶詢問他們需要什麼文件,並且他們可以輸入「* -103.csv」,並且宏只會在文件名中使用-103.csv文件。

我知道我可以直接硬編碼「* -103.csv」,它會這樣做,但是,有很多不同名稱的文件,我將不得不爲一堆文件運行此宏。如果它可以問用戶,那會很好。

這裏是我已經有了代碼:

Sub CSV_Sheets() 
'This takes the .csv file from a specific folder and puts it into the workbook 
Dim i As Integer 
Dim path As String 
Dim Extension As String 

Cells(2, 2).Value = InputBox("Extension of File:", "Extension *-#.csv") 
Extension = Cells(2, 2).Value & "\" 
i = 1 
Range("A1").Value = "CSV Folder Path=" 
Range("A1").HorizontalAlignment = xlRight 
Cells(1, 2).Value = InputBox("CSV File Folder Pathway:", "Path Assignment") 
path = Cells(1, 2).Value & "\" 
Filename = Dir(path & Extension) 
Do While Filename <> "" 
Workbooks.Open Filename:=path & Filename, ReadOnly:=True 
For Each Sheet In ActiveWorkbook.Sheets 
    Sheet.Copy After:=ThisWorkbook.Sheets(1) 
Next Sheet 
Workbooks(Filename).Close 
Filename = Dir() 
Loop 
End Sub 
+0

使用'InputBox'命令。 – 2014-10-08 18:50:25

+1

我已經在那裏有InputBox命令,只是想知道如何將我輸入的輸入框和擴展名連接起來,所以在「Filename = Dir(path&Extension)行中我想要我在輸入框中輸入的內容在擴展的地方 – CTCWAP 2014-10-08 18:56:42

+0

你有沒有嘗試在'Extension'前加'*' – 2014-10-08 19:05:05

回答

1
Sub test() 

Dim FolderPath As String 
Dim xlwb As Excel.Workbook 
Dim Filename As String 
Dim path As String 


FolderPath = "PathToYourFolder" 

path = FolderPath & "\*" & InputBox("Enter the Extension here.", "Extension Retrieval") & ".csv" 

Filename = Dir(path) 

If Filename = "" Then 

ElseIf Filename <> "" Then 
    Set xlwb = Excel.Workbooks.Open(FolderPath & "\" & Filename) 
End If 

End Sub 

星號作爲通配符,我有一個測試104.csv文件命名爲測試這和它的工作就像一個魅力

+0

謝謝!它的效果很好。 – CTCWAP 2014-10-08 19:24:23

相關問題