Поиск WORD VBA и переключение на расширенный

#vba #replace #ms-word

Вопрос:

Нужна твоя помощь. И я заранее знаю, что встроенная функция «CTRL H» должна дать соответствующий ответ-но в моем случае это не так. Из — за проблем с языком текста и из-за того, что у меня много символов, которые не являются «буквами или цифрами», обычный поиск и замена вызывают ошибки.

А теперь за просьбу — и большое — большое спасибо заранее!

Я смог «очистить» и переработать относительно простой код, который выполняет поиск и замену всего документа, к которому я смог подключить MSGBOX для подтверждения запросов на каждую замену:

Кнопка «ОК» — подтверждает однократную замену. Кнопка «Нет» — пропускает этот поиск — и не переключается. Кнопка «Отмена» — останавливает макрос.

  1. Как вы добавляете четвертую кнопку, которая будет выполнять «Заменить все»?
  2. Существует ли опция «обратного отсчета» для запуска без вмешательства пользователя? Я хочу, чтобы по умолчанию было «Ок», и даже если я не нажимал, то через 3 секунды — будет внесено изменение.
  3. Я ломал голову в течение многих дней — и не могу преобразовать этот код, который будет работать только в выделенном / отмеченном тексте.

ВОТ КОД, КОТОРЫЙ Я ИСПОЛЬЗУЮ

 Sub Want2Replace()
  Dim myRange As Range
  Set myRange = ActiveDocument.Content
  myRange.Find.ClearFormatting
  myRange.Find.MatchWildcards = True
  Dim cached As Long
  cached = myRange.End
      Do While myRange.Find.Execute("åÀ")
          myRange.Select
          MyAnswer = MsgBox("Replace " amp; myRange.Find.Text amp; "?", vbYesNoCancel)
              If MyAnswer = vbYes Then Call Shva_Na
              If MyAnswer = vbCancel Then Exit Sub
                  myRange.Start = myRange.Start   Len(myRange.Find.Text)
                  myRange.End = cached
      Loop
  End Sub
 

Комментарии:

1. Вы не можете добавлять кнопки в окно сообщения. Вы можете использовать только стандартные опции.

2. Вы можете создать форму пользователя для большей гибкости/мощности. gmayor.com/Userform.htm

3. Окно сообщения не может дать вам кнопки! Вы изучали возможность использования формы пользователя?

Ответ №1:

В зависимости от ваших требований вы можете написать вторую функцию с помощью replaceAll или адаптировать свою функцию в соответствии с ожиданиями пользователей.

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

Таким образом, вы должны решить и ответить себе на вопрос, действительно ли пользователь хочет ReplaceAll и/или одна Replace специальная функция является дополнительной функцией.

Комментарии:

1. Большое вам спасибо за все ответы. Как уже упоминалось, сложность заключается в том, что иногда замена удаляет дополнительные символы, которые были «проглочены» в результате поиска. Этот вопрос должен оставаться открытым: есть ситуации, когда пользователь заранее знает, что он позволяет себе «Заменить все», и ожидается, что он не будет удивлен, и есть ситуации, когда он предпочитает проверить несколько случаев, и только затем переключиться на использование «Заменить все».