Word VBA ActiveDocument.PageWidth = 9999999 в рабочем документе - PullRequest
0 голосов
/ 24 сентября 2018

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

Моя проблема заключается в том, что при запуске макроса возникает ошибка, поскольку значение ActiveDocument.PageSetup.PageWidth это 9999999 (какое-то MaxValue, я полагаю).

Я думаю, что, возможно, это произошло, потому что мой документ состоит из нескольких разделов, некоторые из которых имеют 2 или 4 столбца, а некоторые - альбомные (поэтому значения PageSetup будут отличаться от обычного портрета).только стиль документа).

У кого-нибудь есть советы для:

1) Как правильно восстановиться после такой ситуации в моем макросе?Например, могу ли я проверить значения и сбросить их из значений PageSetup в одном из самых первых портретных разделов документа?

2) Как управлять документом, когда я его пишу, чтобы избежать установки значений PageSetup«undefined» (не правильное слово) из значений, которые я первоначально установил для документа, и когда я вручную устанавливаю поля для раздела ландшафта?

Спасибо.

Некоторый код,для тех, кто заинтересован.Мой макрос вызывает ошибку для значения PageWidth с чем-то вроде ".PageWidth = <Переменная объекта или С переменной блока не установлено.>", Когда я наведите курсор мыши на PageWidth в отладчике.

Dim usablewidth As Single
With ActiveDocument.PageSetup
   usablewidth = .PageWidth - .leftmargin - .RightMargin
End With

1 Ответ

0 голосов
/ 24 сентября 2018

Значение 999999 (не определено) возникает, когда запрашиваемый объект имеет более одного возможного значения.Как вы описали, это тот случай, когда в документе имеется более одного раздела с различной шириной страницы.

Чтобы решить эту проблему, запросите свойства Section, а не свойства документа.Например, чтобы получить ширину страницы первого раздела:

ActiveDocument.Sections(1).PageWidth

Тем не менее, должна быть возможность установить относительное горизонтальное положение изображения для центрирования на странице ... Простейшим было бы использоватьInlineShape и установите его Range.ParagraphAlignment по центру.

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