913 / 591 / 291
Регистрация: 22.02.2018
Сообщений: 1,743
Записей в блоге: 2
1

Работа с колонтитулами в документе MS Word

24.09.2018, 05:23. Показов 2872. Ответов 5
Метки нет (Все метки)

Доброго времени суток!
Возможно, эта тема поднималась, и не раз, но я либо туплю, либо плохо гуглю Подскажите, как программно вставить текст (или заменить) в колонтитуле.
К Word'у подключаюсь через OLE без использования компонент
C++
1
2
  vVarApp=CreateOleObject("Word.Application");
//ну и далее стандартно
Заранее благодарю за помощь.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.09.2018, 05:23
Ответы с готовыми решениями:

Работа с колонтитулами в Word
Добрый день! Подскажите пожалуйста как изменить шрифт и размер для номеров страницы в документе...

Работа метода Word.Selection.Find при поиске в документе Word
Дорого времени суток! никак не могу разобраться в механизме работы range.find Запускаю: ...

Поиск word документов с колонтитулами
help! Нужно организовать поиск word документам , которые содержат колонтитулы. Т.е. прошерстить...

Работа с колонтитулами Excel
Всем привет. Создаю программу. Необходимо, чтобы она вписывала в колонтитул файлов excel...

5
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
31153 / 20361 / 7929
Регистрация: 22.10.2011
Сообщений: 35,294
Записей в блоге: 6
24.09.2018, 12:51 2
Лучший ответ Сообщение было отмечено TrollHammer как решение

Решение

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
    String fn = "C:\\MyPrograms\\BDS\\Builder\\11.doc";
 
    Variant vVarApp, vVarDoc;
    vVarApp = CreateOleObject("Word.Application");
    vVarApp.OlePropertySet("Visible", true);
    vVarDoc = vVarApp.OlePropertyGet("Documents");
    vVarDoc.OleProcedure("Open", WideString(fn.c_str()));
 
    const int wdHeaderFooterPrimary = 1;
    Variant range = vVarApp.OlePropertyGet("ActiveDocument").OlePropertyGet("Sections").
        OlePropertyGet("First").
        OlePropertyGet("Headers").
        OleFunction("Item", wdHeaderFooterPrimary).
        OlePropertyGet("Range");
    range.OlePropertySet("Text", WideString("Very funny"));
    // ...
только что прекрасно заменило мне содержимое колонтитула.
3
913 / 591 / 291
Регистрация: 22.02.2018
Сообщений: 1,743
Записей в блоге: 2
25.09.2018, 00:24  [ТС] 3
volvo, Спасибо огромное!!!
0
913 / 591 / 291
Регистрация: 22.02.2018
Сообщений: 1,743
Записей в блоге: 2
12.11.2018, 08:12  [ТС] 4
Доброго времени суток.
Еще немного затрону эту тему. В колонтитуле нужно установить шрифт. В примере уважаемого volvo после
C++
1
2
3
4
5
Variant range = vVarApp.OlePropertyGet("ActiveDocument").OlePropertyGet("Sections").
        OlePropertyGet("First").
        OlePropertyGet("Headers").
        OleFunction("Item", wdHeaderFooterPrimary).
        OlePropertyGet("Range");
Прописываю
C++
1
range.OlePropertyGet("Font").OlePropertySet("Name", "Times New Roman");
И получаю в ответ от Word'а - "Неверный тип переменной".
Подскажите, как правильно сделать, ибо с Word'ом не особо дружу.
Заранее благодарю за помощь.
1
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
31153 / 20361 / 7929
Регистрация: 22.10.2011
Сообщений: 35,294
Записей в блоге: 6
12.11.2018, 11:09 5
Лучший ответ Сообщение было отмечено TrollHammer как решение

Решение

C++
1
range.OlePropertyGet("Font").OlePropertySet("Name", WideString("Times New Roman"));
, если не ошибаюсь (проверить негде, Word-а нет)
2
913 / 591 / 291
Регистрация: 22.02.2018
Сообщений: 1,743
Записей в блоге: 2
12.11.2018, 15:12  [ТС] 6
volvo, Вы опять меня выручили!!! Низкий поклон!!!

Добавлено через 7 минут

Не по теме:

Уважаемый volvo, я думаю, что многие посетители форума были бы очень благодарны, если бы Вы написали статью о различиях классов AnsiString, String и WideString, где и когда их использовать. Это было бы очень полезно для новичков, вроде меня. Еще раз ОГРОМНОЕ СПАСИБО!!!

0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
12.11.2018, 15:12

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Работа с колонтитулами на VBA
Доброго времени суток! Подскажите, пожалуйста, как решить следующую задачку: Задача:...

Ворд: работа с колонтитулами
Как программно можно получить номер раздела документа по текущему положению курсора? С уважением

Работа с колонтитулами docx через Open XML
Добрый день, уважаемые форумчане ! Появилась необходимость найти и заменить некоторые слова в...

Работа с колонтитулами: анализ групп объектов, подсчет количества фигур
Добрый день. На странице word имеется группа объектов (линии, текстовые блоки). Как обратиться к...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.