Из VBA для MS Word: нахождение позиции на бумаге Range напечатает - PullRequest
0 голосов
/ 23 апреля 2020

Учитывая объект Range в VBA для MS Word, мне нужно найти, где он будет напечатан на бумаге.

Контекст

У меня есть около 40 связанных шаблонов слов для букв. Они должны быть распечатаны и отправлены автоматически, поэтому адресная информация для всех шаблонов должна быть на одном месте на бумаге. Адреса вставляются в Field объекты посредством слияния.

Чтобы выяснить, какие из них мне нужно исправить, я написал

Sub screen_fields()
    Dim Fld As Field
    For Each Fld In ActiveDocument.Fields
        Debug.Print Fld.Result.Start, Fld.Result.Font.Name, Fld.Result.Font.Size, Fld.Code
    Next
End Sub

, но начальная позиция, кажется, в символах, не в сантиметрах, точках или дюймах.

Есть ли свойство объекта Range или функция, которая может сказать мне, где он будет напечатан?

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

Ответы [ 2 ]

1 голос
/ 23 апреля 2020

Прямым ответом на ваш вопрос является использование свойства Information объекта Range.

.Range.Information(wdVerticalPositionRelativeToPage)

Однако, как указал в своем ответе макропод, ваша проблема может быть решена путем редактирования шаблон. Вы должны убедиться, что если есть какие-либо поля слияния над адресом, они не могут быть расширены до pu sh адрес вниз. Это не то, что вы можете обнаружить с помощью одного только кода.

0 голосов
/ 23 апреля 2020

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

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

Код отсутствует требуется.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...