通过在文件路径中使用单元格的值来遍历单元格并导入CSV文件

时间:2018-09-21 19:05:40

标签: excel vba loops csv

我有一张工作表,资产名称在第一行,日期在第一列。

Current file

我需要遍历第一行中的所有单元格,获取该单元格的值,并将其包含在文件路径中,以从文本文件中导入第6列。

到目前为止,我已经知道了:

For i = 2 To HCP.Cells(1, HCP.Columns.Count).End(xlToLeft).Column
    If HCP.Cells(1, i).Value <> "" Then
        j = HCP.Cells(2, HCP.Columns.Count).End(xlToLeft).Column + 1
            With HCP.QueryTables.Add(Connection:="TEXT;" & Folder & "\" & i & "1440.CSV", Destination:=HCP.Cells(2, j + 1))
                .TextFileParseType = xlDelimited
                .TextFileCommaDelimiter = True
                .TextFileSpaceDelimiter = True
                .TextFileColumnDataTypes = Array(9, 9, 9, 9, 9, 1, 9, 9, 9, 9)
                .Refresh BackgroundQuery:=False
                i = i + 1
            End With
    End If
Next

我在.Refresh BackgroundQuery:=False行中看到了这一点:

Error Message

我认为我没有在循环中正确使用变量。

1 个答案:

答案 0 :(得分:1)

这是因为您实际上并未将i设置为单元格中的任何值,而只是您的计数器。您需要将HCP.Cells(1, i).Value设置为变量,然后将该变量通过文件路径传递。

尝试一下:

For i = 2 To HCP.Cells(1, HCP.Columns.Count).End(xlToLeft).Column

    rowContent = HCP.Cells(1, i).Value

    If rowContent <> "" Then
        j = HCP.Cells(2, HCP.Columns.Count).End(xlToLeft).Column + 1
            With HCP.QueryTables.Add(Connection:="TEXT;" & Folder & "\" & rowContent & "1440.CSV", Destination:=HCP.Cells(2, j + 1))
                .TextFileParseType = xlDelimited
                .TextFileCommaDelimiter = True
                .TextFileSpaceDelimiter = True
                .TextFileColumnDataTypes = Array(9, 9, 9, 9, 9, 1, 9, 9, 9, 9)
                .Refresh BackgroundQuery:=False

            End With
    End If
Next

此外,您不需要在代码中使用i = i + 1Next会自动将您的i值递增To,即您指定的值。