вставить строки текста в уже существующий файл .txt / .xml? - PullRequest
0 голосов
/ 27 марта 2019

Мне было поручено обновить большой существующий XML-файл некоторыми данными из файла Excel. Я хочу использовать код VBA для более быстрого обновления, поскольку число строк Excel и текстовых строк достаточно велико и может измениться в будущем.

Я уже искал и нашел различное количество кода для чтения и записи в файл txt / xml (неважно, какой). Однако я не смог найти какой-либо информации о том, как записать в уже существующий файл txt / xml, не удалив весь его уже существующий контент. Просто для примера, я написал ниже текст, над которым нужно работать (я не использую оригинальный текст, так как в нем сотни строк).

How to improve on life!
Pro tips:

Enjoy!

Я хотел бы иметь возможность вставлять несколько строк текста в это пространство, используя текстовую строку в качестве ссылки (после «Pro tip:» или перед «Enjoy!») Или обнаруживая пустую строку. и использовать это в качестве отправной точки. Я не знаю количества строк текста и строк Excel, однако у меня есть некоторые контрольные точки, в которых файл имеет предварительно существующую структуру, поэтому я могу использовать текст в некоторых строках в качестве контрольных.

Возможно ли это сделать в Excel VBA?

1 Ответ

1 голос
/ 27 марта 2019

Текстовый файл является последовательным. Это означает, что после строки сразу следует следующая строка. Нет места для вставки.

Чтобы вставить строку в существующий текстовый файл, вам необходимо «наложить» этот файл, а в том месте, где вы хотите «вставить» строку, написать ее, а затем наложить оставшуюся часть. Ниже приведен пример:

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...