在excel中从许多文件类型的目录导入.csv

时间:2017-09-01 13:45:29

标签: excel vba csv import

您好我有一个文件夹,里面有82个不同类型的文件(.cpg,.dpf,.csv等...)

我想要excel进入该文件夹,只导入.csv文件,其中应该有24个文件。出于某种原因,这似乎导入49张而不是24张,我也觉得每个声明都有一个if语句很邋but但不知道更好的方法 有人可以建议一个更好的方法吗?下面是我使用的代码。

Sub BringInCSV()
Dim bookList As Workbook
Dim mergeObj As Object, dirObj As Object, filesObj As Object, everyObj As 
Object
Dim WS As Worksheet
Dim sheetname As String
Dim sheetname2() As String
Dim Folder As String


Application.ScreenUpdating = False
Set mergeObj = CreateObject("Scripting.FileSystemObject")


Folder = InputBox("Where are the files located?")
On Error Resume Next
Set dirObj = mergeObj.GetFolder(Folder)
Set filesObj = dirObj.Files
For Each everyObj In filesObj
 If Right(everyObj, 4) = ".csv" Then
    Set bookList = Workbooks.Open(everyObj)
    Range("A1:CO" & Range("A65536").End(xlUp).Row).Copy
    ThisWorkbook.Worksheets(1).Activate
    Set WS = Sheets.Add
    Range("A65536").End(xlUp).PasteSpecial
    Application.CutCopyMode = False
    sheetname = everyObj
    sheetname2 = Split(sheetname, "rollup_", 2)
    Sheets(ActiveSheet.Name).Name = Replace(Left(sheetname2(1),         
Len(sheetname2(1)) - 4), "_", " ")
End If
On Error Resume Next
bookList.Close

Next
End Sub

1 个答案:

答案 0 :(得分:0)

原来数据来自一个mac,它将一堆隐藏文件放在目录中,所以我将if语句更改为

 If Right(everyObj, 4) = ".csv" And Mid(everyObj, Len(Folder) + 2, 2) <> "._" Then