2017-11-11 296 views
0

我有从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的数据,但什么是错在我的代码和数据不是从文件到数组传递。如果有人能指出问题,我会非常感激。

回答

3

你需要使用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

+0

谢谢。现在它正在工作。 –

+0

@YowE3K再次感谢。我忘了textArray是基于0的。 – 2017-11-11 21:45:30