Как сделать поиск и заменить соответствующие поля в Microsoft Word?

У меня есть документ Word с полями эталонного разнообразия, которые имеют вид "[поле].[Поле]"- другими словами, между двумя полями есть точка. Я хочу глобально заменить это пробелом.

Word предлагает специальный символ ^d для поиска полей, но по какой-то причине запрос "^d. ^ D" ничего не находит. Тем не менее, ". ^ D" делает. Однако теперь возникает проблема - что я должен указать в качестве текста замены, чтобы сохранить код поля? При использовании регулярных выражений я мог бы использовать выражение "Найти что", такое как \1, но в режиме регулярных выражений ("подстановочный знак") ^d недопустимо.

Я думаю, я мог бы написать макрос...

6 ответов

Решение

Обычно лучше искать макро-маршрут при поиске полей, потому что, как вы говорите, алгоритм поиска, который использует Word, работает не так, как вы могли бы надеяться с полями.

Но если вы точно знаете, что содержат поля, вы можете указать шаблон поиска, который, вероятно, будет работать (но не в режиме подстановочных знаков).

Например, если вы хотите найти пары полей чисел, например

{ STYLEREF 1 \s }.{ SEQ Figure \* ARABIC \s 1 }

(обычно это один и тот же набор полей везде в документе)

Если вам действительно нужно искать следующее:

{ STYLEREF 1 \s }.<any field>

Вы можете убедиться, что коды полей отображаются и искать

^d STYLEREF 1 \s ^21.^d

или же

^19 STYLEREF 1 \s ^21.^19

Если вам нужно быть более точным, вы можете указать и второе поле.

"^ d" работает только для поиска начала поля, но не конца поля.

Жаль, что ^w хочет найти хотя бы 1 символ пробела, потому что в противном случае поиск будет более надежным

^19^wSTYLEREF^w1^w\s^w^21.^19

Возможно, кто-то еще знает, как обойти это без использования подстановочных знаков?

Я хотел бы добавить к решению Bibadia.

Пример поля ввода индекса; мы хотим изменить имя, которое мы написали с ошибкой.

  • Убедитесь, что отображается скрытое форматирование (переключайтесь с помощью клавиш SHIFT+CTRL+F8).
  • Убедитесь, что опция подстановочных знаков не выбрана. Для поиска полей используйте код открывающих и закрывающих фигурных скобок (опционально используйте ^w для пробелов, как предложил Bibadia)

     ^19 XE "Део, Джон" ^ 21 

  • Replace не распознает символ фигурных скобок, но позволит вставить содержимое буфера обмена.;). Для этого вставьте в текст правильную запись. CTRL+F9 для вставки поля и ввода:

     XE "Доу, Джон" 

  • Выберите поле выше и скопируйте

  • использование

     ^ с 
    в коробке замены

  • Хит Заменить все

Та-да!

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

Сначала включите скрытые символы, перейдя в раздел Домашняя страница> Абзац>, чтобы переключить символ отображения / скрытия абзаца. Кроме того, выберите все и включите коды полей (щелкните правой кнопкой мыши и выберите "Переключить коды полей").

Откройте новый пустой документ Word в дополнение к тому, который вы открыли. Вы будете использовать это позже. Начните запись макроса и найдите поле, используя "^d" (код поля), как вы сказали.

Когда поле найдено, скопируйте только текст поля в скобках, а не полную ссылку на поле. Пока макрос все еще записывает, нажмите ALT + TAB для нового пустого документа и вставьте код поля в виде простого текста.

На этом этапе выполните необходимую процедуру поиска и замены кодов полей. Выделите обработанные коды полей, скопируйте, ALT + TAB обратно в исходный документ и вставьте обратно в квадратные скобки { }.

Остановите запись макроса. Добавьте любую дополнительную пользовательскую обработку в макрос VBA.

Выберите все и повторно переключите коды полей. Обновите коды полей.

Вам не нужен макрос. Просто включите все коды полей с помощью Alt+F9. Затем найдите и замените то, что вы хотите изменить. После завершения замены снова нажмите Alt + F9, чтобы отключить коды полей.

Отказ от ответственности: я не создавал это решение, но оно чистое и элегантное, и я подумал, что оно должно быть включено здесь:

(Адаптировано из " Поиск и замена кодов полей в Word"):

  1. Создайте или найдите один экземпляр поля, в которое вы хотите преобразовать текст
  2. Видимые коды поля переключения (Alt F9)
  3. Скопируйте код для поля, которое вы хотите использовать в буфер обмена (выделите и Ctrl C)
  4. Откройте диалоговое окно "Заменить" (Ctrl H), вставьте текст, который хотите заменить, в поле " Найти что", а затем введите ^c в поле " Заменить на".

Это заменит ваш текст содержимым буфера обмена, превратив его в код поля, который вы скопировали на шаге 3. Он также скопирует информацию о форматировании (шрифт, цвет и т. Д.), Чтобы контролировать, как поле будет выглядеть, когда оно скрыто. (Предостережение: я проверял это с Word 2003 только под Windows 7.)

Опоздать на это, возможно, уже слишком поздно для Бет (извините, Бет). И это может быть не совсем то, что искала Бет. Но для всех, кто заинтересован...

Похоже, что Бет, возможно, создал подписи по всему документу, используя INSERT CAPTION (отсюда и наличие полевых кодов). Это означает, что эти подписи будут (автоматически) созданы в стиле CAPTION.

Глобально заменить разделитель "." с " " (пробел) в таких заголовках сделайте два шага:

[1] Перейти к REFERENCES | INSERT CAPTIONзатем нажмите на NUMBERING и заменить SEPARATOR "" с "EM-DASH". Это заменит все разделители в заголовках для выбранной метки в CAPTION Окно. Если в документе используются другие метки (например, РИСУНОК), выберите другие метки одну за другой и повторите этот процесс.

[2] Выполните поиск / замену для поиска специального символа "em-dash" (^+) в стиле CAPTION, заменив его на "". Нажмите REPLACE ALL,

Вуаля!

ПРИМЕЧАНИЕ. Это предполагает, что em-dash нигде не отображается в тексте заголовка. Если это произойдет, то вам нужно будет выполнить предварительную и последующую "скрипку", чтобы гарантировать, что эти штрихи не будут затронуты глобальной заменой выше.

"Предварительная скрипка" состоит в том, чтобы выполнить глобальный поиск / замену надписей, заменив em-dash ("^+") какой-либо другой строкой (например, "EM-DASH"), которая никогда не встречается ни в одном тексте надписи., Затем вы делаете замену разделителя, как описано выше. Наконец, "post-fiddle" - восстановить тире в заголовках, сделав глобальную замену строки "EM-DASH" фактическим символом тире "^+".

Другие вопросы по тегам