Расщепление строки строк в VBA - PullRequest
0 голосов
/ 08 ноября 2018

Я импортирую данные в MS Word из CSV. Моя проблема возникает, когда я пытаюсь разделить данные с помощью встроенной функции split (). Это должно быть просто, но когда я пытаюсь разделить его, я получаю ошибку «Несоответствие типов». Это моя первая строка текста, которая появляется в ближайшем окне:

"Acct","SSN","Name","Last name","Phone1","Phone2","Address","City","State","Ph home","Ph work","Ph mobile","Ph other","Email","Notes","Zip"

Однако при наведении курсора на переменную во время отладки я думаю, что вся строка обрабатывается как строка:

""Acct","SSN","Name","Last name","Phone1","Phone2","Address","City","State","Ph home","Ph work","Ph mobile","Ph other","Email","Notes","Zip""

Я предполагаю, что при импорте каждый элемент строки обрабатывается как строка, а затем сама строка превращается в одну гигантскую строку? Я действительно не уверен. Пока все, что я хочу сделать, это разделить строку на две части и проверить первый элемент по заранее определенной переменной. Я еще не использовал эту функцию, и еще не совсем разбираюсь в VBA в Word.

Короче говоря, как я могу трактовать эту строку как тип данных, с которым я могу взаимодействовать настолько, чтобы разделить ее на элементы? Я думаю, что все это рассматривается как один элемент, что вызывает у меня проблемы.

    Private Function importCSV_(x)

    Dim filenum As Integer
    Dim arrLines() As String
    Dim arrSplit As Variant

    Dim textline As String
    Dim lines

filenum = FreeFile()
Open "\\...\studentData.csv" For Input As #filenum

Do Until EOF(filenum)
    Line Input #filenum, textline
    lines = lines + 1

        Debug.Print textline
        Debug.Print split(textline, ",", 2) '<--- ERROR APPEARS HERE

        arrSplit = split(textline, ",", 2)

    ReDim Preserve arrLines(lines)
        arrLines(lines) = arrSplit

    If checkForFour_(arrSplit(0)) = True Then
            arrSplit(UBound(arrLines)) = split(arrLines(lines), ",")
        Else
            arrSplit(UBound(arrLines) - 1) = split(arrLines(lines) - 1) & "," & split(arrLines(lines), ",")
        End If

Loop

Debug.Print UBound(arrLines)
Debug.Print UBound(arrSplit)

End Function

Функция checkForFour_ является частной функцией, которая просто проверяет форматирование ввода данных. Я все еще изучаю программирование и сам по себе в этом отношении, так что я постоянно облегчаю свою работу, тем самым создавая некоторый мусорный код.

1 Ответ

0 голосов
/ 08 ноября 2018

Небольшая синтаксическая ошибка:

Debug.Print split(textline, ",")(2)

Это должно сделать это для вас. Элемент указывается в скобках после массива.

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