У меня есть простая задача, взять текстовый файл и дублировать каждое слово в текстовом файле. Так что, если текстовый файл был «Я люблю блины», мой выход должен быть «Я люблю блины для блинов»Лучший инструмент для создания сценариев Windows
Я пробовал использовать Word 2013 и VBA. Вот мой код:
Sub HLSConvert()
Set docNew = Documents.Add
Set origDoc = Documents.Open("c:\test\AllWords.txt")
Dim r As String
For Each sentence In ActiveDocument.StoryRanges
For Each W In sentence.Words
r = W + W
docNew.Content.InsertAfter r
DoEvents
Next
Next
End Sub
К сожалению, VBA ДЕЙСТВИТЕЛЬНО медленный. Текстовые файлы, над которыми я работаю, составляют тысячу страниц, и для VBA требуется 2 часа для дублирования большого файла. Поэтому я надеюсь, что кто-то здесь может помочь. Есть ли лучший инструмент \ язык, который я могу использовать для достижения этого? Или может кто-то предложить улучшения моего кода VBA для ускорения процесса?
Предложения: Не используйте ActiveDocument - Word всегда необходимо вычислить, который является ActiveDocument. Вы установили переменную в два документа, вместо этого используйте этот объект (origDoc). Объединение измененного содержимого в строку, а не запись его обратно в документ (docNew) в цикле. Каждый раз, когда вы обращаетесь к объекту, он медленнее. Запишите всю строку в документ, как только вы закончите. Полностью используйте объектную модель, вместо того, чтобы VBA угадать, что вы имеете в виду: r = r & W.Text & W.Text (обратите внимание на & вместо +). Вы уверены, что вам нужны DoEvents? –
Не открывайте файл txt в Word как документ Word. Используйте FSO и TextStream для их обработки. Вы также можете сделать это из файла VBS, а затем вам вообще не нужен MS Office для этой задачи. Google - ваш друг. :) – vacip
'r = r &" "& W &" "& W' –