3

我想从文本文件中提取一些信息。这是我的文本文件中的一行,我想提取数字并将这些数字保存在一个数组中。

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
4

1 回答 1

2

VBASplit()函数可能会为您简化一些事情。它使用分隔符拆分字符串并将元素放入数组中。例如下面的测试代码...

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]
于 2013-05-07T09:27:33.563 回答