Re: VBA.Word
От: Xumpopena Россия scripting.fatal.ru
Дата: 18.12.03 21:50
Оценка: 16 (2)
Здравствуйте, IgBoris, Вы писали:

IB> Хай, народ!

IB>Подскажите, плиз, следующее:
IB>Имеется вордовый файл.
IB>Как в него программно добавить колонтитул?
IB>Необходимо проверять условия:
IB>Если колонтитул имеется (созданный юзверем вручную), то в него следует добавлять строки программно, иначе создавать его.
IB>Заранее благодарю...

Не так давно не помню кем давался достаточно универсальный ответ на класс подобных вопросов: запускаешь записыватель макросов, делаешь клавишами/мышой что надо, останавливаешь записыватель, ищешь в макросах только что записаный, запускаешь его на редакцию (изменение) и вперед... код анализировать.
Но не все так просто, как на самом деле. Если делать по уму.
Тут фенька в том, что, возможно, придется несколько условий проверять: дело в том, что Ворд помимо различий верхних/нижних колонтитулов различает также: колонтитул первой страницы, четных страниц и главный колонтитул. Главный выводится на нечетных страницах, на первой, если в установках страницы не выбран пункт "различать колонтитул первой страницы" и на четных, если там же не выбран пункт "различать колонтитулы четных страниц". Но это только присказка, так как КАЖДАЯ секция (или раздел) может иметь свой комплект колонтитулов: первой страницы, четных страниц, главный. А может не иметь. Но все это проверяется соответствующими переменными: см. Object Browser (клавиша F2). Там немало найдется, друг Горацио, чему поучиться.

Это примерчик того, как установить главный верхний колонтитул первой секции
ActiveDocument.Sections(1).Headers(wdHeaderFooterPrimary).Range.Text = "Главный верхний колонтитул"


А это — схема проверки и изменения главного верхнего колонтитула первой секции
sTmp=trim(ActiveDocument.Sections(1).Headers(wdHeaderFooterPrimary).Range.Text)
if sTmp="" then
    ActiveDocument.Sections(1).Headers(wdHeaderFooterPrimary).Range.Text= s & vbCrLf & "Моя новая строка."
else
    ActiveDocument.Sections(1).Headers(wdHeaderFooterPrimary).Range.Text= "Моя новая строка."
endif


Ну а дальше — дело техники .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.