我想从文本文件中提取一些信息。这是我文本文件中的一行,我想提取数字并将这些数字保存在数组中。
ST/X 1000.0000000000000000 1400.0000000000000000 40.0000000000000000 25.0000000000000000 12.0000000000000000
数字的数量没有固定(即在这个例子中我有5个数字,但它可能或多或少) 数字之间总是有3个空格,但数字长度也不固定(例如1000.0000000000000000的长度为21,但12.0000000000000000的长度为19)。我写了这段代码。但我的代码的问题是它返回空格作为最后一个数字。我的代码无法正常工作 你有更好的想法让我更好地完成这项工作吗? 谢谢你的帮助和想法:)
我的代码:
Dim lngPos As Long
Dim lngCount As Long
Dim ifile As Integer
Dim Xarray() As String
Let ifile = FreeFile
Dim Name As String
Dim xi As Integer
Name = util1.fDateiName("*.txt", "Text")
'"C:\Dokumente und Einstellungen\bbastan\Desktop\test.txt"
'Open Name For Input As ifile
'While Not EOF(ifile)
'Line Input #ifile, entireline
ReDim Xarray(10)
xi = 0
Open Name For Input As ifile
lngPos = 1
While Not EOF(ifile)
Line Input #ifile, entireline
Do
lngPos = InStr(lngPos, entireline, Space(3))
If lngPos > 0 Then
xi = xi + 1
lngCount = lngCount + 1
lngPos = lngPos + 3
Xarray(xi) = Mid(entireline, lngPos, 21)
End If
Loop Until lngPos = 0
Wend
Dim I As Integer
If xi > 2 Then
MsgBox "ja"
For I = 1 To xi - 1
MsgBox Xarray(I)
Next I
Else
MsgBox "nein"
For I = 1 To xi
MsgBox Xarray(I)
Next I
答案 0 :(得分:2)
VBA Split()
功能可能会为您简化一些事情。它使用分隔符拆分字符串并将元素放入数组中。例如,以下测试代码......
Sub LineSplitTest()
Dim entireline As String, strArray() As String, thing As Variant
entireline = "ST/X 1000.0000000000000000 1400.0000000000000000 40.0000000000000000 25.0000000000000000 12.0000000000000000 "
strArray = Split(entireline, Space(3), -1, vbBinaryCompare)
For Each thing In strArray
thing = Trim(thing)
If Len(thing) > 0 Then
Debug.Print thing
End If
Next
Debug.Print "[done]"
End Sub
...在VBA IDE的立即窗口中打印:
ST/X
1000.0000000000000000
1400.0000000000000000
40.0000000000000000
25.0000000000000000
12.0000000000000000
[done]