VBA: Как читать строки в динамический массив с размером, который должен быть определен (по количеству строк в текстовом файле) - PullRequest
0 голосов
/ 26 июня 2011

У меня проблемы с поиском, как я могу прочитать количество строк в текстовом файле, который я читаю, без повторного открытия файла.Спасибо заранее за ваше время.Я заранее прошу прощения, если вам удастся найти то, о чем я говорю (что я уже сделал должной осмотрительности).

Sub CreateMessage()
    Dim filepath As String

    ' Read filepath in spreadsheet
    filepath = Cells(6, 8)

    ' Parse string contents from script
    ' Open file
    Open filepath For Input As #1

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

    ' Close file
    Close #1
End Sub

Ответы [ 2 ]

1 голос
/ 27 июня 2011

Вы можете прочитать весь файл и затем использовать

arr = Split (contents, vbcrlf)

Чтобы получить массив.Предполагая, что он имеет типичный разделитель строк Windows.

1 голос
/ 26 июня 2011

Если вы читаете их в массив, вы можете просто сохранить текущий максимальный размер массива в переменной и использовать ReDim (переразмерность), чтобы расширить его, когда вам нужно больше места. ReDim изменяет размер массива на лету, и вы, вероятно, захотите убедиться, что вы делаете это пошагово, а не по одному за раз.

Что-то вроде (не проверено, поэтому вам нужно проверить):

option explicit
option base 0
dim numlines as integer
dim maxlines as integer
numlines = 0
maxlines = 0
dim lines() as string

for every line in file             ' not actually valid syntax '
    if numlines = maxlines then
        maxlines = maxlines + 100
        redim preserve lines (maxlines)
    end if
    lines(numlines) = line
    numlines = numlines + 1
end for
redim preserve lines (numlines)

И этот цикл for на самом деле не является допустимым синтаксисом, но он не имеет отношения к методу, используемому для переразмерения. Вы должны заменить его любым кодом, из которого вы получаете информацию из файла.

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