Как сделать поиск и заменить соответствующие поля в 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"):
- Создайте или найдите один экземпляр поля, в которое вы хотите преобразовать текст
- Видимые коды поля переключения (Alt F9)
- Скопируйте код для поля, которое вы хотите использовать в буфер обмена (выделите и Ctrl C)
- Откройте диалоговое окно "Заменить" (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" фактическим символом тире "^+".