Небольшой макрос для ворда

Пока проходил производственную практику возникла необходимость отредактировать около 300 документов в одной папке. Это были доп. соглашения к ТД, но не суть.

В общем, чтобы не париться, я, путем поиска в гугл, создал небольшую форму с макросом для замены текста во всех файлах word (.docx) в определенной папке.


Выглядит это так:

*ниже приложу ссылку для скачивания*

Небольшой макрос для ворда Microsoft Word, Макрос, Vba, Длиннопост, Microsoft

Путь до папки копируется прямо из проводника:

Небольшой макрос для ворда Microsoft Word, Макрос, Vba, Длиннопост, Microsoft

С пунктами "что заменить" и "на что заменить" я думаю все понятно.

Чекбокс "с задержкой" предназначен для слабых ПК, дабы постоянное открытие и закрытие документов не загружало память. Текстбокс рядом с чекбоксом предназначен для указания задержки в секундах, 3 секунд на самых слабых ПК более, чем достаточно.


Вот как выглядит сам код:


Private Sub CommandButton1_Click()
Dim s As String, fldr As String
fldr = TextBox1.Value & "\"
s = Dir(fldr & "*.doc")
Do While s <> ""
With Documents.Open(fldr & s)
Selection.Find.Replacement.ClearFormatting
With Selection.Find
.Text = TextBox2.Value
.Replacement.Text = TextBox3.Value
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
Selection.Find.Execute Replace:=wdReplaceAll
If CheckBox1.Value = True Then Call idle(TextBox4)
ActiveDocument.Save
.Close
End With
s = Dir
Loop
MsgBox ("Замена завершена!")
End Sub

И код таймера задержки:

Public Sub idle(n As Single)
Dim t As Single
t = Timer + n
DoEvents
Do While Timer < t
Loop
End Sub

Как я уже говорил, части кода взяты с просторов интернета и совмещены в один документ. Вы можете встретить что-то подобное в интернете.


Сделал наглядный пример. Создал несколько документов в папке с текстом:

Небольшой макрос для ворда Microsoft Word, Макрос, Vba, Длиннопост, Microsoft

Заменяем:

Небольшой макрос для ворда Microsoft Word, Макрос, Vba, Длиннопост, Microsoft

После замены:

Небольшой макрос для ворда Microsoft Word, Макрос, Vba, Длиннопост, Microsoft

Документ с макросом вы можете скачать по ссылке: https://yadi.sk/d/58JkrdIXtCTtx

*Работает на версиях MS Office 2010 и 2013. Также необходимо разрешить запуск макросов в настройках безопасности:

Небольшой макрос для ворда Microsoft Word, Макрос, Vba, Длиннопост, Microsoft

Надеюсь, что этот небольшой макрос поможет кому-то сэкономить время и силы при работе с документами :)

Вы смотрите срез комментариев. Показать все
1
Автор поста оценил этот комментарий

Всё-таки это очень рисково менять набор символов, на другой, фиг знает что там может попасться, данное решение - только если на 100% уверен в уникальности текста (ну типа название продукта на аналогичный).

раскрыть ветку (1)
2
Автор поста оценил этот комментарий

Да, можно испортить документ, необходимо абсолютно уникальный кусок текста указать, специально для этого оставил такую большую форму

Вы смотрите срез комментариев. Чтобы написать комментарий, перейдите к общему списку