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

Пока проходил производственную практику возникла необходимость отредактировать около 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

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

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

как хорошо, что notepad++ умеет это всё стоково)

особенно мне нравится там запись макросов вживую с последующим воспроизведением

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

Запись макросов есть и в офисе. Тут дело в том, что надо было исправить около 250 документов, и запись макросов слабо поможет в этом деле.

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

дык в notepad++ есть кнопка "заменить во всех открытых документах" и даже просто "в папке"


но я не сравнивал эти два редактора, у них разное предназначение, просто к слову пришлось

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

C docx notepad++ не поможет, к сожалению. docx это по сути zip архив, в котором лежит куча xml (можете сами поменять формат на zip и открыть любым архиватором и убедиться)

А поскольку zip немного да сжимает, то вместо текста мы получаем бинарную кашу (для восприятия человека, имею ввиду).

Так что увы, но нотпад не поможет для docx и всех новых X форматов...

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

ещё раз для слепых: я не сравнивал эти два редактора, и мне бы в голову не пришло бы открывать .docx в notepad++, равно как и .json в ворде

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

А че ты такой дерзкий то?

Я лишь объяснил для тех, кто не в теме ПОЧЕМУ notepad++ для этого не подходит.

С таким же успехом могу порекомендовать не пользоваться MS Office, а пересесть на какой нибудь Libre Office и линуксы. И нет, я не сравниваю, просто так, к слову пришлось -_-

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

на libre, open или google пересесть невозможно просто в силу их неполной совместимости с монополистом, MS

т.е. при конвертации постоянно корраптятся какие-то мелкие моменты типа отступов, полей и т.д.


и гарантировать, что секретарша контраргента на своём Office 97 откроет и увидит то, что видишь ты, становится невозможно

раскрыть ветку (3)
2
Автор поста оценил этот комментарий
В организации, где практиковался, очень сторого с безопасностью, из инструментов были только офис и пдф-редактор собственное разработки или выполненный на заказ, ну и стандартные средства винды.
Интернет по белым списком, чтобы добавить сайт в белый список - запрос в СБ.
Так что ни о каких иных программах, кроме ворда, тогда не шло речи
1
DELETED
Автор поста оценил этот комментарий
TeX/LaTeX, можно в notepad++ редактировать, можно в блокноте, можно в виме, законом не запрещено. Мелокософтовская дрянь для офисного планктона.
Автор поста оценил этот комментарий

Прописные истины, да. Но в теории, если все будут сидеть на либре офисе... Хотя нет, о чем это я, бред какой то...

Как тогда бабло то пилить...

Автор поста оценил этот комментарий

Макрорекордер есть и в ворде и в экселе

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