我有一张工作表,资产名称在第一行,日期在第一列。
我需要遍历第一行中的所有单元格,获取该单元格的值,并将其包含在文件路径中,以从文本文件中导入第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
行中看到了这一点:
我认为我没有在循环中正确使用变量。
答案 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 + 1
,Next
会自动将您的i值递增To
,即您指定的值。