2016-06-07 29 views
1

我正在處理一個宏,需要選擇我想要的任何文件夾並將該文件夾中的每個類型的文件導入爲cvs ,xls,txt並將它們全部放入1個工作簿(不是工作表)中。所以導入的所有標籤都會在那裏。目前代碼只能採用1種類型。我試着將以下代碼更改爲:從文件夾目錄導入所有類型的文件(cvs,xls,txt)到一個主excel文件

fileName = Dir(directory & "*.csv, *.xls,*.txt") 

但是什麼也沒有發生。

下面的宏有一個固定的目錄路徑,但我希望有一個對話框彈出,這使我可以靈活地選擇任何文件夾,我想從中導入我的文件。這是我到目前爲止,但請修改它或做一個最好的新的。

Sub Input_Sheets() 

Dim directory As String, fileName As String, sheet As Worksheet, total As Integer 
Dim WrdArray() As String 

Application.ScreenUpdating = False 
Application.DisplayAlerts = False 

directory = "C:\Users\ktam\Desktop\New folder\" 

'Switch to the preferred type the folders hold. (It cannot hold 2 types) 
'fileName = Dir(directory & "*.xl??") 
fileName = Dir(directory & "*.csv") 

'As long as the file name is found in the folder, import the file. 
Do While fileName <> "" 
Workbooks.Open (directory & fileName) 'Opens a random file from the folder 
    'WrdArray() = Split(fileName, ".") 

    For Each sheet In Workbooks(fileName).Worksheets 
    'Workbooks(fileName).ActiveSheet.Name = WrdArray(0) '0 Puts in the name of the document 

       total = ThisWorkbook.Worksheets.Count 
       Workbooks(fileName).Worksheets(sheet.Name).Copy After:=ThisWorkbook.Worksheets(total) 
    Next sheet 

Workbooks(fileName).Close 
fileName = Dir() 
Loop 

Application.ScreenUpdating = True 
Application.DisplayAlerts = True 

MsgBox "Complete" 

End Sub 
+0

使用'*。*'並通過檢查擴展名來篩選出想要的類型... –

+0

優秀的Tim!這需要將我想要的所有內容導入到文檔中。現在只有我可以從我選擇的任何文件夾中選擇它。 –

+0

http://www.cpearson.com/excel/browsefolder.aspx查看頁面上的最後一個功能 –

回答

0

我有這樣的代碼,這是一個文件夾內循環和基於文件名的文件加載到一個數組非常有用:

Global sfolder As String 

sub file_merger() 

file = Dir(folderchooser) 

dim trackerfiles(1 to 500) as variant 

counter = 1 

Do While file <> "" 

    if instr(1,file,".xlsx") > 0 or instr(1,file,".csv") > 0 then 


    trackerfiles(counter) = sfolder & "\" & file 
    file = Dir() 
    counter = counter + 1 

    If file = "" Then 
     Exit Do 
    End If 

    End if 

Loop 


end sub 

Function folderchooser() As String 

With Application.FileDialog(msoFileDialogFolderPicker) 
    .Title = "Select a folder" 
    .AllowMultiSelect = False 
    .Show 
    sfolder = .SelectedItems(1) 
End With 

folderchooser = sfolder & "\" 

End Function 

你可以用它加載到一個數組,然後寫您自己的代碼將文件導入工作簿(棘手的部分是循環瀏覽文件夾)。

相關問題