从文本文件(VBA)中读取不同的部分

时间:2017-11-08 14:43:24

标签: vba text-files wildcard

从以下两个示例文件中,我希望只将所有以#COLUMNINFO开头的行读入excelfile,并使用逗号作为分隔符分隔每一行。

由于每个文件的行号发生变化,我只能读取这些行。到目前为止,我的尝试是使用类似于:

的代码
Do Until ts.ReadLine = "#COLUMN= " & [?]
Loop

然后从该行读取文件,但我似乎无法将通配符与.ReadFile结合使用。

欢迎任何帮助。

Example 1

Example 2

我已编辑了我的代码,这是更新后的结果。不知怎的,“在做循环”#39;失败。
编辑:

Sub InfoExtractorTest()

    Dim fso As Scripting.FileSystemObject
    Dim ts As Scripting.TextStream
    Dim textline As String
    Dim CommaPosition As Integer

    Set fso = New Scripting.FileSystemObject

    Set ts = fso.OpenTextFile(Environ("Userprofile") & "\Desktop\VBA Test\GEFExtractor\Example GEF's\362B-S142.gef")

    Do While Not ts.AtEndOfStream

      'Reads indiviual lines from file
        Data = ts.ReadLine
        If InStr(1, UCase(Data), "#COLUMNINFO") > 0 Then

        textline = ts.ReadLine
        CommaPosition = InStr(textline, ",")

            Do Until CommaPosition = 0
                ActiveCell.Value = Left(textline, CommaPosition - 1)
                ActiveCell.Offset(0, 1).Select
                textline = Right(textline, Len(textline) - CommaPosition)
                CommaPosition = InStr(textline, ",")
            Loop

            ActiveCell.Value = textline
            ActiveCell.Offset(1, 0).End(xlToLeft).Select

        End If
    Loop

    ts.Close
    Set fso = Nothing

End Sub

2 个答案:

答案 0 :(得分:0)

与此link展示一样,您希望使用'喜欢'。

Do Until ts.ReadLine Like "#COLUMN= *" & [?]
Loop

这将允许您使用星号作为通配符

答案 1 :(得分:0)

如果我正确理解您的问题,请尝试以下操作:

Do While Not ts.AtEndofStream
   data = ts.ReadLine

   If InStr(1, UCase(data), "#COLUMNINFO") > 0 then
      'do something
   End If
Loop

ts.close

我假设您正在使用FileSystemObject来阅读该文件。