Сохранение информации о поиске и замене в макросе (Microsoft Word)
У Simao есть несколько макросов, которые много ищут и заменяют. Однако по завершении макроса он хотел бы восстановить поиск и заменить параметры на те, которые действовали непосредственно перед запуском макроса. Итак, Симао задается вопросом, где найти все свойства для поиска и замены, чтобы он мог сохранять их в начале каждого макроса, а затем восстанавливать их в конце.
Как намекает Симао, «хорошая практика» состоит в том, чтобы ваш макрос возвращал все, что он изменяет, в то состояние, в котором он находился до запуска макроса.
Таким образом, ваш макрос не испортит ничего, что может делать пользователь.
Идея реализации этой практики состоит в следующем:
-
Выясните, что изменится в вашем макросе. Создайте переменные, в которых будут храниться все свойства, которые будут изменены. Сохраните свойства в созданных вами переменных. Ты работаешь . Восстановите эти свойства из переменных, которые вы ранее установили на шаге 3
Ключевым моментом здесь является шаг 1. Если вы не можете понять, что изменится в вашем макросе, вы не можете перейти к другим шагам. При выполнении операций поиска и замены может быть задействован ряд объектов, и каждый из них имеет большое количество свойств.
Один из простых способов разобраться во всем — просто записать макрос, который выполняет операцию поиска и замены, а затем посмотреть на код, созданный записывающим устройством. Например, я записал поиск по слову «the»
и заменив его словом «THE.» Когда я остановил рекордер макросов и посмотрел на то, что он создал, я увидел соответствующую часть того, что я увидел:
Selection.Find.ClearFormatting Selection.Find.Replacement.ClearFormatting With Selection.Find .Text = "the" .Replacement.Text = "THE" .Forward = True .Wrap = wdFindContinue .Format = False .MatchCase = True .MatchWholeWord = False .MatchWildcards = False .MatchSoundsLike = False .MatchAllWordForms = False End With
Я вернусь к первым двум строкам этого кода через мгновение, но взгляну на все остальные полученные строки. С помощью объекта .Find указывается целый ряд свойств. Это свойства, соответствующие настройкам в диалоговом окне «Найти и заменить». Итак, теперь у вас есть как минимум список переменных, которые вам нужно определить, поэтому вы можете сохранить настройки каждого из этих свойств, а затем восстановить их.
Теперь вернемся к первым двум строкам кода; они представляют собой главную ложку дегтя. Метод .ClearFormatting избавляется от любого форматирования, определенного для операции «Найти и заменить». Чтобы увидеть, какие свойства будут затронуты, если я определю форматирование в «Найти и заменить», я снова записал макрос той же операции «Найти и заменить», но на этот раз указав, что текст замены должен быть выделен жирным шрифтом и подчеркнут. Все, что записал диктофон, было таким же, за исключением четырех строк кода, добавленных сразу после второй строки, показанной выше:
With Selection.Find.Replacement.Font .Bold = True .Underline = wdUnderlineSingle End With
Это строки, которые определяют форматирование, которое я хотел использовать при замене. В предыдущем коде средство записи макросов показывает все свойства объекта .Find. В этом случае записывается только то, что я изменяю, и это как раз и находится в объекте .Font. К сожалению, есть и другие объекты, которые можно указать помимо объекта .Font -. Paragraph, .Tabs, .Language и так далее. Кроме того, они могут быть установлены не только для объекта .Find, но и для объекта .Replacement. Это потенциал сотен свойств, которые необходимо сохранить и восстановить.
Невозможно? Возможно, не невозможно, но это определенно пугает. Используя метод записи макросов, вам нужно будет выполнить поиск (или замену; концепции те же) и изменить форматирование всех возможных свойств форматирования, которые могут быть найдены или заменены.
Если вам это удастся, у вас будет целый список.
Вот, например, код, созданный для объекта Selection.Find.Font:
With Selection.Find.Font .Size = 14 .Bold = True .Underline = wdUnderlineSingle .StrikeThrough = True .DoubleStrikeThrough = False .Hidden = True .SmallCaps = True .AllCaps = False .Color = wdColorRed .Superscript = True .Subscript = False End With
Другими словами, 11 различных свойств для сохранения и сброса. Но ждать!
Есть больше! (Звучит как реклама ножа Гинсу, правда?) Я не вносил никаких изменений на вкладке «Дополнительно» диалогового окна «Найти шрифт», что, несомненно, расширило бы этот список. Вы можете получить представление об общем количестве свойств для объекта .Font, просмотрев документацию Microsoft для свойств этого объекта. (Убедитесь, что вы развернули ссылку «Свойства» для объекта .Font, используя раскрывающийся список в левой части страницы.)
https://docs.microsoft.com/en-us/office/vba/api/word.font
Здесь вы увидите более 50 объектов недвижимости. И помните, что есть отдельный объект .Font, который принадлежит объекту .Replacement, и есть похожие парные объекты для других элементов форматирования (.Paragraph, .Tabs и т. Д. И т. Д.).
Определенно устрашающе.
Как только вы поймете, на сколько свойств влияет операция «Найти и заменить», вы начнете понимать, почему многие люди отказываются от сохранения и восстановления параметров форматирования для операций. Это выполнимо; Впрочем, это не мелочь.
_Примечание: _
Если вы хотите знать, как использовать макросы, описанные на этой странице (или на любой другой странице на сайтах WordTips), я подготовил специальную страницу, содержащую полезную информацию.
link: / wordribbon-WordTipsMacros [Щелкните здесь, чтобы открыть эту специальную страницу в новой вкладке браузера]
.
WordTips — ваш источник экономичного обучения работе с Microsoft Word.
(Microsoft Word — самая популярная программа для обработки текстов в мире.) Этот совет (13762) относится к Microsoft Word 2007, 2010, 2013, 2016, 2019 и Word в Office 365.