在一个工作表Excel for Mac中合并CSV

时间:2015-09-27 05:01:17

标签: excel vba macos csv excel-vba-mac

我有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

我没有收到任何错误,但是当我运行宏时没有发生任何事情。

0 个答案:

没有答案