我有一个VBA脚本,它读取文本文件,然后创建一个内容数组。
目前我必须指定数组的大小。有没有办法让数组的大小取决于文本文件中的行数?
Sub WriteToArray()
Const strFileName As String = "C:\Users\km933\Documents\Excel Macro\Keyword_File.txt"
Dim PR(1 To 20)
Dim intFileNum As Integer
Dim intCount As Integer
Dim strRecordData
intFileNum = FreeFile
intCount = 1
Open strFileName For Input As #intFileNum
Do Until EOF(intFileNum) Or intCount > 20
Input #intFileNum, strRecordData
PR(intCount) = strRecordData
intCount = intCount + 1
Loop
MsgBox PR(1)
Close #intFileNum
End Sub
答案 0 :(得分:0)
您可以使用ReDim动态更改数组的大小。如果要保留已添加的条目,可以使用ReDim Preserve。
Sub WriteToArray()
Const strFileName As String = "C:\Users\km933\Documents\Excel Macro\Keyword_File.txt"
Dim PR() As String
Dim intFileNum As Integer
Dim strRecordData As String
intFileNum = FreeFile
Open strFileName For Input As #intFileNum
ReDim PR(0)
Do Until EOF(intFileNum) Or intCount > 20
Input #intFileNum, strRecordData
ReDim Preserve PR(UBound(PR) + 1)
PR(UBound(PR)) = strRecordData
Loop
MsgBox PR(1)
Close #intFileNum
End Sub
唯一的问题是在那个例子中没有使用PR(0)......但是通过一点额外的努力,这也是可能的。这个例子只是简化为基本概念。
当然,您应该将变量定义为变体!
答案 1 :(得分:0)
你可以简单地阅读所有内容,然后分成一遍:
dim PR() as String
open "C:\Users\km933\Documents\Excel Macro\Keyword_File.txt" for Input as #1
PR = Split(Input$(LOF(1), #1), vbCrLf)
close #1
for i = 0 To ubound(PR)
debug.? i, PR(i)
next