从文本文件连接线 – Excel VBA

我有一个像这样的格式的文本文件,

文本:

-- Begin Line1 Line2 Line3 ^ -- Begin Line1 Line2 Line3 Line4 ^ . . . . 

我基本上想要Line1 Line(whatever)之间的行--Begin开始^在一个数组,所以在数组中的每个元素是一堆线arrays的例子

 Array = [("Line1" & vbNewLine & "Line 2") , ("Line1" & vbNewLine & "Line 2" & vbNewLine & "Line 3") ... ] 

但基本上要存储在单元格中的数组中的每个元素。 (甚至不需要使用数组)…

不知道这是甚至可能在Excel VBA中,但这是我迄今为止所尝试的

  Dim FileNum As Integer Dim DataLine As String Dim Lines As Variant Dim j As Integer FileNum = FreeFile() Open "C:..." For Input As #FileNum While Not EOF(FileNum) Line Input #FileNum, DataLine If InStr(DataLine, "-- Begin") > 0 Then nextLinecounter = 1 ElseIf InStr(DataLine, "^") > 0 Then nextLinecounter = 0 j = j + 1 ElseIf nextLinecounter = 1 Then Lines(j) = DataLine + .. Somehow concatenate next lines into array End If Wend 

我坚持如何跳过下一行,并将其附加到当前条目,这样做的任何方式谢谢。

所以我会做一点不同的。 使用更新的文件读取方法。

有关如何读取VBA中的* .txt文件的更多详细信息,请参阅here

注意:您需要通过VBE – >工具 – >引用添加对Microsoft Scripting Runtime引用

 Option Explicit Sub ReadTxtFile() Dim oFSO As New FileSystemObject Dim oFS As TextStream Dim filePath As String filePath = "C:\Users\" & Environ$("username") & "\Desktop\foo.txt" If Not fileExist(filePath) Then GoTo FileDoesntExist On Error GoTo Err ReDim arr(0) As String Dim s As String Set oFS = oFSO.OpenTextFile(filePath) Do While Not oFS.AtEndOfStream Dim line As String line = oFS.ReadLine If InStr(line, "-- Begin") = 0 And InStr(line, "^") = 0 Then s = s & line End If If InStr(line, "^") > 0 Then arr(UBound(arr)) = s ReDim Preserve arr(UBound(arr) + 1) s = vbNullString End If Loop ReDim Preserve arr(UBound(arr) - 1) oFS.Close Dim k As Long For k = LBound(arr) To UBound(arr) Debug.Print k, arr(k) Next k Exit Sub FileDoesntExist: MsgBox "File Doesn't Exist", vbCritical, "File not found!" Exit Sub Err: MsgBox "Error while reading the file.", vbCritical, vbNullString oFS.Close Exit Sub End Sub Function fileExist(path As String) As Boolean fileExist = IIf(Dir(path) <> vbNullString, True, False) End Function 

foo.txt看起来像这样

 -- Begin Line1 Line2 Line3 ^ -- Begin Line1 Line2 Line3 Line4 ^ 

你的数组看起来像这样

在这里输入图像说明