Управление форматом перекрестных ссылок

Стивен спросил, можно ли управлять форматом перекрестных ссылок, вставляемых Word. Когда он вставляет метку и номер, такие как Таблица 1 или Рисунок 12, ему нужны строчные буквы (таблица, рисунок) и неразрывный пробел между меткой и номером.

Нет способ управления этим типом форматирования перекрестных ссылок в Word. Очевидно, вы можете изменить перекрестные ссылки вручную после их размещения, но всякий раз, когда вы обновляете поля, для них будет использоваться исходный формат, выбранный Word. Есть несколько решений на основе макросов, которые вы можете попробовать. Первое решение изменит фактические коды полей, используемые для поля:

 Sub FieldRefChanges1 () При ошибке Возобновить следующий Dim oStoryRng As Range Dim oFld Как поле для каждого oStoryRng в ActiveDocument.StoryRanges For Each oFld In  oStoryRng.Fields Если oFld.Type = wdFieldRef And oFld.Result.Words.Count  

Макрос включает пару вложенных циклов For. Первый проходит через каждую историю в документе, а второй проходит через каждое поле в каждой истории. Затем используется оператор If, чтобы убедиться, что поле является полем REF (тип, используемый для перекрестных ссылок) и что результатом поля является два или меньше слов (как в таблице 1 или на рисунке 12).

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

Есть пара недостатков этого макроса. Во-первых, если вы запустите его несколько раз, переключатель * lower будет добавлен в поля REF несколько раз. Во-вторых, макрос не изменяет пробел в результатах поля на неразрывный.

Чтобы преодолеть обе проблемы, просто измените макрос так, чтобы он автоматизировал ручной процесс, через который вы должны пройти. для изменения результатов макроса.

 Sub FieldRefChanges2 () При ошибке Возобновить Следующий Dim oStoryRng как диапазон Dim oFld как поле Dim sTemp как строка Dim J как строка для каждого oStoryRng в ActiveDocument.StoryRanges для каждого oFld In  oStoryRng.Fields Если oFld.Type = wdFieldRef And oFld.Result.Words.Count  

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

Оцените статью
Frestage.ru
Добавить комментарий