Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从多种文件类型的目录导入excel中的.csv_Excel_Vba_Csv_Import - Fatal编程技术网

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

从多种文件类型的目录导入excel中的.csv,excel,vba,csv,import,Excel,Vba,Csv,Import,您好,我有一个文件夹,其中有82个不同类型的文件(.cpg、.dpf、.csv等…) 我希望excel进入文件夹,只导入有24个文件的.csv文件。出于某种原因,这似乎导入了49张而不是24张,我也觉得每个语句都有一个For语句,然后一个if语句是草率的,但不知道有更好的方法 有人能建议一个更好的方法吗?下面是我使用的代码 Sub BringInCSV() Dim bookList As Workbook Dim mergeObj As Object, dirObj As Object, fil

您好,我有一个文件夹,其中有82个不同类型的文件(.cpg、.dpf、.csv等…)

我希望excel进入文件夹,只导入有24个文件的.csv文件。出于某种原因,这似乎导入了49张而不是24张,我也觉得每个语句都有一个For语句,然后一个if语句是草率的,但不知道有更好的方法 有人能建议一个更好的方法吗?下面是我使用的代码

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

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

 If Right(everyObj, 4) = ".csv" And Mid(everyObj, Len(Folder) + 2, 2) <> "._" Then
如果Right(everyObj,4)=“.csv”和Mid(everyObj,Len(文件夹)+2,2)”。\ux

原来数据来自一台mac电脑,它在目录中放置了一堆隐藏文件,所以我将if语句改为read

 If Right(everyObj, 4) = ".csv" And Mid(everyObj, Len(Folder) + 2, 2) <> "._" Then
如果Right(everyObj,4)=“.csv”和Mid(everyObj,Len(文件夹)+2,2)”。\ux

通过在打开每个文件后添加代码,将每个文件的名称指定给一个字符串变量,然后在逐步执行代码时将鼠标悬停在该变量上,逐步浏览代码,查看找到的额外文件。for…next循环方法对我来说似乎并不草率,但不必要的resume next确实如此。通过在打开每个文件后添加代码,将每个文件的名称指定给字符串变量,然后在逐步遍历代码时将鼠标悬停在该变量上,逐步浏览代码以查看找到的额外文件。对于我来说,for…next循环方法似乎并不草率,但不必要的resume next确实如此。