VBA:如何将字符串读入动态数组中,并确定大小(通过文本文件中的行数)

时间:2011-06-25 23:21:04

标签: excel vba file-io

我无法在不重新打开文件的情况下查找我正在阅读的文本文件中的行数。在此先感谢您的时间。如果你能轻易找到我正在谈论的内容(我已经做了尽职调查),我会提前道歉。

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 个答案:

答案 0 :(得分:1)

如果您正在将它们读入数组,您可以将数组的当前最大大小保留在变量中,并在需要更多空间时使用ReDim(redimension)展开它。 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循环实际上并不是有效的语法,但它与用于重新定标的方法无关。您应该使用从文件中获取信息的任何代码替换它。

答案 1 :(得分:1)

您可以阅读整个文件,然后使用

arr = Split(contents,vbcrlf)

获取阵列。假设它具有典型的Windows行分隔符。