我正在尝试使用Dictionary方法整合来自几个csv文件的数据。 虽然我已经仔细检查了路径和其他细节,但程序运行时遇到错误。
运行时错误432
在自动化操作期间找不到文件名或类名。
此错误来自以下代码行.Item(sn(j)) = GetObject("G:\OF\" & sn(j)).Sheets(1).UsedRange.Value
。
这是我的代码:
Sub M_integratie_csv()
sn = Split(CreateObject("WScript.Shell").Exec("cmd /c Dir ""G:\OF\*.csv"" /b").StdOut.ReadAll, vbCrLf)
With CreateObject("Scripting.Dictionary")
For j = 0 To UBound(sn)
.Item(sn(j)) = GetObject("G:\OF\" & sn(j)).Sheets(1).UsedRange.Value
GetObject("G:\OF\" & sn(j)).Close False
Next
Sheets.Add.Name = "total"
For Each it In .Items
Sheets("total").Cells(Rows.Count, 1).End(xlUp).Offset(1).Resize(UBound(it), UBound(it, 2)) = it
Next
End With
End Sub
我使用的csv文件的链接如下。 csv file 1 csv file 2 csv file 3
哪里出错?
答案 0 :(得分:1)
以下代码似乎在我的计算机上运行正常:
Sub M_integratie_csv()
sn = Split(CreateObject("WScript.Shell").Exec("cmd /c Dir ""G:\OF\*.csv"" /b").StdOut.ReadAll, vbCrLf)
Set oDic = New Dictionary
With oDic
For j = 0 To UBound(sn)
.Item(sn(j)) = GetObject("G:\OF\" & sn(j)).Sheets(1).UsedRange.Value
GetObject("G:\OF\" & sn(j)).Close False
Next
Sheets.Add.Name = "total"
For Each it In .Items
Sheets("total").Cells(Rows.Count, 1).End(xlUp).Offset(1).Resize(UBound(it), UBound(it, 2)) = it
Next
End With
End Sub
请注意,必须在VBE中设置对Microsoft Scripting Runtime的引用才能使上述代码生效。