从大量文本文件中提取单行数据并导入 Excel - 具有不同的字符串长度

Extract a single line of data from numerous text files and import into Excel - with different string lengths

我不想劫持一个线程,但我正在处理这个 OP 的应用程序:

那里的解决方案非常棒,适用于他的应用程序:

    Sub ExtractGPS()
    Dim filename As String, nextrow As Long, MyFolder As String
    Dim MyFile As String, text As String, textline As String, posGPS As String

    MyFolder = "C:\Users\Desktop\Test\"
    MyFile = Dir(MyFolder & "*.txt")

    Do While MyFile <> ""
        Open (MyFolder & MyFile) For Input As #1
        Do Until EOF(1)
            Line Input #1, textline
            text = text & textline
        Loop

        Close #1
        MyFile = Dir()
        posGPS = InStr(text, "GPS Position")
        nextrow = Sheet1.Cells(Rows.Count, "A").End(xlUp).row + 1
        Sheet1.Cells(nextrow, "A").Value = Mid(text, posGPS + 33, 37)
    Loop
End Sub

所以我也需要从多个文本文件中提取文本,但是对于我的应用程序,我将有不同大小的字符串长度,长度并不总是等于 37 个字符。

Sheet1.Cells(nextrow, "A").Value = Mid(text, posGPS + 33, 37)

...

    for example:
GPS Position                    : 50 deg 7' 33.40" N, 5 deg 30' 4.06" W
GPS Position                    : 20 deg 7' 22.0" N, 9 deg 2' 3.5" W
GPS Position                    : 50 deg 7' 29.401" N, 5 deg 20' 9.095" W

我是 VBA 的菜鸟,但我的知识足以让事情发生。对我来说,似乎必须有一种方法来指定直到行尾。或者我需要创建一个变量来计算字符数,直到找到马车或类似的东西。

很明显,在 OP 的原始应用程序中,字符串长度不会改变,并且上面的 GPS 位置永远不会像我上面那样打印出来。如果有人可以帮助我完成我的申请,我将不胜感激。

麦克

您可以使用 InStr 到 return 下一个换行符的索引,并通过一些数学运算将其用作 Mid 的长度参数。喜欢:

Mid(Text, posGPS + 33, InStr(posGPS, Text, vbCr) - posGPS - 33)

注意:如果 vbCr 不起作用,您也可以尝试 vbLf