0

您好我有一个文本文件,我想将它分配给一个数组,然后将数组中的每个项目分配给一个自定义变量。当我在记事本中打开文件时,似乎数据在一行上,并且在下一条信息之前还有大约 10 个制表符的空间。

我使用以下代码成功地将 msgbox 中的信息查看为 MyArray(i)。

在我的代码示例中,所有信息都列在 MyArray(0) 中,而 MyArray(1) 给出了下标超出范围的错误。文本文件中的信息似乎似乎由 vbCrLf 分隔,但这也不起作用......

有没有办法修剪 MyArray(0) 中的空格,然后将单个数据重新分配给新数组?这是我的文件中前两条信息的样子:

967042
144890

Public Function ReadTextFile()
  Dim TextFileData As String, myArray() As String, i As Long
  Dim strCustomVariable1 As String
  Dim strCustomVariable2 As String

  '~~> Open file as binary
  Open "C:\textfile\DATA-SND" For Binary As #1

  '~~> Read entire file's data in one go
  TextFileData = Space$(LOF(1))
  Get #1, , TextFileData

  '~~> Close File
  Close #1

  '~~> Split the data in seperate lines
  myArray() = Split(TextFileData, vbCrLf)

  For i = 0 To UBound(myArray())
      MsgBox myArray(i)
  Next
End Function
4

1 回答 1

1

在正常情况下,我建议您Line Input改用:

Open "C:\textfile\DATA-SND" For Input As #1
    Do Until EOF(1)
        Redim Preserve myArray(i)
        Line Input #1, myArray(i)
        i = i + 1&
    Loop
Close #1

但是,您可能会处理不同的结束行字符。您可以使用现有代码,只需将其更改为使用vbCrvbLf代替vbCrLf. 我的方法假定您的结束行字符是vbCrLf.

所以对于 UNIX 文件:

myArray() = Split(TextFileData, vbLf)

对于旧的 Mac 文件:

myArray() = Split(TextFileData, vbCr)
于 2013-08-15T19:04:50.503 回答