VBA数组值
问题描述:
我有从txt文件传递数据到数组的问题。我有需要从txt文件中填充数据的word文档。VBA数组值
Private Function ReadString() As String
Dim textArray() As String
Dim data As String
Open "C:\Data\XFile.ini" For Input As #1
r = 0
Do Until EOF(1)
ReDim textArray(0 To r)
Line Input #1, data
textArray(r) = data
r = r + 1
Loop
ReadString = textArray(77)
' MsgBox ReadString
' MsgBox "After"
Close #1
End Function
我需要从线78的数据,但什么是错在我的代码和数据不是从文件到数组传递。如果有人能指出问题,我会非常感激。
答
你需要使用ReDim Preserve
来保存数组中的数据,当你ReDim
它。否则,数组将被擦除。
Private Function ReadString() As String
Dim data As String, textArray() As String
Dim n As Long
ReDim textArray(0)
Open "C:\Data\XFile.ini" For Input As #1
Do Until EOF(1)
ReDim Preserve textArray(count)
n = n + 1
Line Input #1, data
textArray(n) = data
r = r + 1
Loop
Close #1
ReadString = textArray(77)
End Function
你也可以使用一个ArrayList来存储数据。
Private Function ReadString2() As String
Dim data As String
Dim list As Object
Set list = CreateObject("System.Collections.ArrayList")
Open "C:\Data\XFile.ini" For Input As #1
Do Until EOF(1)
ReDim Preserve textArray(count)
Line Input #1, data
list.Add data
Loop
Close #1
ReadString = list(77)
End Function
提取整个阵列使用textArray = list.ToArray
。
谢谢。现在它正在工作。 –
@YowE3K再次感谢。我忘了textArray是基于0的。 – 2017-11-11 21:45:30