gpt4 book ai didi

ms-access - 使用vba从文本中提取信息

转载 作者:行者123 更新时间:2023-12-02 02:02:52 25 4
gpt4 key购买 nike

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

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

最佳答案

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]

关于ms-access - 使用vba从文本中提取信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16415384/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com