Найти строку, содержащую перекрестную ссылку в Word VBA - PullRequest
0 голосов
/ 16 марта 2019

Цель моего кода - уметь искать набор ключевых терминов с использованием VBA, чтобы можно было применять форматирование жирным шрифтом. Я пытаюсь установить код, чтобы ожидать строки следующих форматов:

  • № товара
  • Item # @
  • Item # @@
  • Item ##
  • Item ## @
  • Item ## @@

Здесь знак # будет представлять число, а символ @ будет представлять нижний регистр позже. Я полагаю, что код, который я написал, может найти общие строки для всего документа, однако # и @ будут иметь перекрестные ссылки на некоторые места в документе, и кажется, что мой скрипт не может найти строки из-за перекрестной ссылки.

Примечание. Я поместил пробелы в теги HTML, потому что я хотел показать, как выглядят теги, прежде чем они будут выполнены.

Целью этого кода является создание динамического документа, в котором элементы обновляются по мере изменения документа, но я собираюсь конвертировать документ в HTML, и у меня есть JavaScript, который ищет текст для создания тегов и применения кода наложение. Я столкнулся с этой необходимостью предварительно обработать документ Word, чтобы обеспечить согласованность форматирования независимо от того, как был применен жирный шрифт. Проблема форматирования возникает, если элемент выделен жирным шрифтом, тогда символ # выделен жирным шрифтом, в результате чего HTML выглядит как Item # , и мне было очень трудно найти эти строки с помощью JavaScript применять кодирование.

Sub FindTheText()
Dim test As Variant
Set test = ActiveDocument.Range.Find
With Selection.Find
    .ClearFormatting
    .Text = "Item [0-9]"
    .MatchWildcards = True
    .MatchCase = False
    .MatchWholeWord = True
    .Wrap = wdFindContinue
End With
Selection.Find.Execute
End Sub

Это просто пример кода, поэтому мне нужно создать серию команд в цикле для поиска каждого типа комбинации # / @, который я ожидаю. Это, по крайней мере, мой план, когда я смогу заставить работать основы

Чтобы продемонстрировать мой требуемый вывод, я собираюсь напечатать пример абзаца, а затем образец плохого HTML-кода и хорошего HTML-кода.

Пример абзаца

Мой пример кода должен быть в состоянии найти элемент 3aa и применить жирный шрифт так, чтобы в html была применена одна жирная метка. Пункты могут отличаться, но я ожидаю, что увижу одну или две цифры и, возможно, одну или две буквы, которые будут варьироваться от пункта 1 до пункта 1z до 99zz, поэтому мне нужно подготовиться ко всем случаям.

Неверный вывод HTML

Мой пример кода должен быть в состоянии найти Item 3aa и применить жирный шрифт так, чтобы в html применялся один жирный тег. Элементы могут различаться, но я ожидаю увидеть одну или две цифры и, возможно, одну или две буквы, которые будут варьироваться от Item 1 до Item 1 z до Item 99 zz , поэтому мне нужно подготовиться ко всем случаям.

Хороший вывод HTML

Мой пример кода должен быть в состоянии найти Item 3aa и применить жирный шрифт так, чтобы в html применялся один жирный тег. Предметы могут различаться, но я ожидаю, что вижу одну или две цифры и, возможно, одну или две буквы, которые будут варьироваться от Item 1 до Item 1z до Item 99zz поэтому мне нужно подготовиться ко всем делам.

1 Ответ

0 голосов
/ 16 марта 2019

Если вы выполняете поиск по шаблону, тогда вы можете использовать «(Item [0-9] @) ()», чтобы найти текст «Item», за которым следует любое количество чисел.

Вы можете использовать «(Item [0-9] {1, n}) ()», чтобы найти текст «Item», за которым следуют числа, где n заменяется максимальным числом чисел, которое вы хотите найти.

Вы можете расширить поле поиска, добавив [a-z] @ или [a-z] {1, n}, чтобы включить строчные буквы.

например. «(Item [0-9] {1,2} [a-z] {1,3}) ()» найдет Item, за которым следуют одно или два числа, а затем 1, 2 или 3 строчных буквы.

В вышеприведенных текстах поиска для заключения текста использовались скобки (). () Известны как поля. В тексте поиска можно использовать от 1 до 9 полей. Вы можете ссылаться на эти поля в тексте замены, используя \ 1 - \ 9. Таким образом, во всех вышеуказанных случаях заменяющий текст будет « \ 1 \ 2 » (как и вы, я вставил пробел, чтобы испечь видимые теги жирным шрифтом.

Подробнее о поиске по шаблону можно найти здесь

https://wordmvp.com/FAQs/General/UsingWildcards.htm

...