在已经存在的.txt / .xml文件中插入文本行?

时间:2019-03-27 13:15:46

标签: excel vba file text

我已被分配使用excel文件中的一些数据来更新现有的大型XML文件。我想使用VBA代码来更快地进行更新,因为excel行和文本行的数量很大,并且将来可能会更改。

我已经搜索并找到了各种有关如何读写txt / xml文件的代码(与哪一个无关)。但是,在不删除所有已存在的txt / xml文件的情况下,我无法找到任何方法。 仅出于示例目的,我在下面写了一个要处理的文本(由于它的数百行长,所以我不使用原始文本)。

How to improve on life!
Pro tips:

Enjoy!

我想要的是能够在该空间中插入多行文本,方法是使用文本行作为参考(在“专业提示:”之后或在“享受!”之前)或检测到空行并以此为起点。我不知道文本行和excel行的数量,但是我确实有一些参考点,因为文件具有预先存在的结构,因此我可以将某些行中的文本用作参考点。

是否可以在excel VBA中做到这一点?

1 个答案:

答案 0 :(得分:1)

文本文件是顺序的。这意味着在一行之后紧跟着下一行。没有插入空间。

要在现有文本文件中插入一行,您需要“假脱机”该文件,并在您要“插入”该行的地方,将其写入,然后假脱机其余部分。以下是一个示例:

Sub spool(myFile As String, myPath As String)
    Dim textline

    Open myPath & myFile For Input As #1
    Open myPath & "tmp.txt" For Output As #2
    While Not EOF(1)
        Line Input #1, textline
        ' do your check here and insert the line
        If (myCondition = True) Then
            Print #2, "Hello World!"
        End If
        Print #2, textline
    Wend
    Close #1
    Close #2
    Kill myPath & myFile
    Name myPath & "tmp.txt" As myPath & myFile
End Sub