VBA:将行从CSV复制到新工作表中的列

我是VBA的初学者,必须编写一个代码来执行以下操作:

1-检索文件夹中的所有csv文件

2-将文件名放在新工作表的第一行。

3-从csv文件中复制所有列标题(第一行)

4-将它们粘贴在新工作表的每个文件名下的一列中。

我知道我需要使用范围,但我很困惑如何使用它。

这是我所做的获取CSV文件。 我有将行复制到列的问题:

Dim CSVPath Dim FS Dim file Dim wkb As Excel.Workbook Dim ResultsSheet As Worksheet Dim RowPtr As Range Dim CSVUsed As Range Set ResultsSheet = Sheet1 'Clear the results sheet ResultsSheet.Cells.Delete Set FS = CreateObject("Scripting.FileSystemObject") 'The CSV files are stored in a "CSV" subfolder of the folder where 'this workbook is stored. CSVPath = ThisWorkbook.Path & "\CSV" If Not FS.FolderExists(CSVPath) Then MsgBox "CSV folder does not exist." Exit Sub End If For Each file In FS.GetFolder(CSVPath).Files If Right(file.Name, 3) = "csv" Then 'Only look at files with .csv extension Set wkb = Application.Workbooks.Open(file.Path) Next 

我也知道循环应该是这样的:

 FinalRow = Cells(Rows.Count, 1).End(xlUp).Row For x = 2 To FinalRow 

任何帮助表示赞赏

尝试像这样:

 Dim wb1 As Workbook, wb2 As Workbook Dim colnum Dim arr1 Dim range2 As Range colnum = 20 Set wb2 = ThisWorkbook Set range2 = wb2.Worksheets("Sheet1").Range("A1") 'wherever I want to paste my data to For Each file In fs.getfolder(CSVPath).file If Right(file.Name, 3) = "csv" Then Set wb1 = Application.Workbooks.Open(file.Path) arr1 = wb1.Worksheets("WHATEVER_ITS_NAME_IS").Range("A1").resize(1, colnum).Value rowlen = UBound(arr1, 1) - LBound(arr1, 1) + 1 collen = UBound(arr1, 2) - LBound(arr1, 2) + 1 range2.Resize(rowlen, collen).Value = arr1 End If Next 

有很多方法来剥皮这只猫。 不知道我的代码是否工作,但也许这会有所帮助。 通常我不喜欢循环遍历每个单元格。 在VBA中,这种循环非常缓慢。 一次只复制整个数组更好。 使用Range.Value属性来设置/获取Range对象的数组数据