我有119个.csv文件。我想将它们全部放在一个工作表上,并将文件名放在列的每个单元格中,以用于来自该文件的数据。因此,从该文件带来的每一行都有文件名在A列。
我正在使用MAC Excel 16. MAC OS中的路径结构与Windows不同。我从一个csv文件中记录了一个宏加载数据,生成的路径如下所示。
我找到的代码:
Sub ImportCSV()
'Author: Jerry Beaucaire
'Date: 10/16/2010
'Summary: Import all CSV files from a folder into a single sheet
' adding a field in column A listing the CSV filenames
Dim wbCSV As Workbook
Dim wsMstr As Worksheet:
Dim fPath As String:
Dim fCSV As String
Set wsMstr = ThisWorkbook.Sheets("Sheet1")
fPath = "/Users/bensimmons/Downloads/GMI/"
Application.ScreenUpdating = False
fCSV = Dir(fPath & "*.csv")
Do While Len(fCSV) > 0
Set wbCSV = Workbooks.Open(fPath & fCSV)
Columns(1).Insert xlShiftToRight
Columns(1).SpecialCells(xlBlanks).Value = ActiveSheet.Name
ActiveSheet.UsedRange.Copy wsMstr.Range("A" & Rows.Count).End(xlUp).Offset(1)
wbCSV.Close False
fCSV = Dir
Loop
Application.ScreenUpdating = True
End Sub
我收到了编译错误:
“Sub或Function not defined(ThisWorkbook 7:26)”
感谢下面的评论,我更新了代码:
Sub ImportCSV()
Dim wbCSV As Workbook
Dim wsMstr As Worksheet:
Dim fPath As String:
Dim fCSV As String
Set wsMstr = ThisWorkbook.Sheets("Sheet1")
fPath = "/Users/bensimmons/Downloads/GMI/"
Application.ScreenUpdating = False
fCSV = Dir(fPath, MacID("CSV"))
Do While Len(fCSV) > 0
Set wbCSV = Workbooks.Open(fPath & fCSV)
Columns(1).Insert xlShiftToRight
Columns(1).SpecialCells(xlBlanks).Value = ActiveSheet.Name
ActiveSheet.UsedRange.Copy wsMstr.Range("A" & Rows.Count).End(xlUp).Offset(1)
wbCSV.Close False
fCSV = Dir
Loop
Application.ScreenUpdating = True
End Sub
我没有收到任何错误,但是当我运行宏时没有发生任何事情。