Russian Qt Forum
Май 03, 2024, 23:19 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: [Решено] Нумерация страниц в документе MS Word  (Прочитано 9455 раз)
Yegor
Гость
« : Сентябрь 24, 2012, 16:40 »

Здравствуйте!

Программно, с помощью OLE, создаю новый документ MS Word. Вопрос, как с вставить автоматическую нумерацию страниц в документе?
« Последнее редактирование: Сентябрь 25, 2012, 13:01 от Yegor » Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #1 : Сентябрь 24, 2012, 16:46 »

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

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
ssoft
Гость
« Ответ #2 : Сентябрь 24, 2012, 16:51 »

Вообще совет правильный - через запись макроса вернее, а так нужно вставить специальное поле {PAGE}.
Записан
Yegor
Гость
« Ответ #3 : Сентябрь 24, 2012, 17:17 »

Если сделать макрос, то он получается такой:

Код:
Application.Templates( _
        "C:\Users\Yegor\AppData\Roaming\Microsoft\Document Building Blocks\1049\14\Built-In Building Blocks.dotx" _
        ).BuildingBlockEntries("Ïðîñòîé íîìåð 3").Insert Where:=Selection.Range, _
        RichText:=True

Объясните, пожалуйста, как это понять? Как примерно перевести это на C++.
Можно кусочек кода отностельно
Код:
вставить специальное поле {PAGE}
?
« Последнее редактирование: Сентябрь 24, 2012, 17:20 от Yegor » Записан
ssoft
Гость
« Ответ #4 : Сентябрь 25, 2012, 06:51 »

Word для отображения каких-то контекстно зависимых данных, например, номер страницы, дата, оглавление и т.п. использует специальные поля. Об этом можно почитать документацию. Ввод специального поля ctrl + F9. Далее вводим идентификатор поля, в данном случае PAGE. Переключение режима отображения поля идентификатор <-> значение с помощью Alt + F9.

Макрос в данном случае выглядит так

Код:
Sub aaa()
    Selection.Fields.Add Range:=Selection.Range, Type:=wdFieldEmpty, PreserveFormatting:=False
    Selection.TypeText Text:="PAGE"
    Selection.Fields.Update
    Selection.Fields.ToggleShowCodes
End Sub
Записан
Yegor
Гость
« Ответ #5 : Сентябрь 25, 2012, 13:01 »

В документации нашел макрос для автоматической расстановки нумерации страниц.

Код:
Sub aaa()
'
' aaa Ìàêðîñ
'
'
With ActiveDocument.Sections(1)
    .Footers(wdHeaderFooterPrimary).PageNumbers.Add _
        PageNumberAlignment:=wdAlignPageNumberCenter, _
        FirstPage:=True
End With

End Sub

Проблема решена.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.048 секунд. Запросов: 22.