使用Dictionary metod

时间:2015-08-30 15:39:42

标签: excel-vba dictionary vba excel

我正在尝试使用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

哪里出错?

1 个答案:

答案 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的引用才能使上述代码生效。