Проходить по ячейкам и импортировать файлы CSV, используя значение ячеек в пути к файлу - PullRequest
0 голосов
/ 21 сентября 2018

У меня есть 1 лист с именами активов в верхней строке и датами в первом столбце.

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 голосов
/ 21 сентября 2018

Это потому, что вы на самом деле не устанавливаете 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 на указанное вами значение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...