Russian Qt Forum

Qt => ActiveX => Тема начата: Yegor от Сентябрь 24, 2012, 16:40



Название: [Решено] Нумерация страниц в документе MS Word
Отправлено: Yegor от Сентябрь 24, 2012, 16:40
Здравствуйте!

Программно, с помощью OLE, создаю новый документ MS Word. Вопрос, как с вставить автоматическую нумерацию страниц в документе?


Название: Re: Нумерация страниц в документе MS Word
Отправлено: Пантер от Сентябрь 24, 2012, 16:46
Универсальное решение: запускаешь ворд, начинаешь запись макроса, делаешь нужное действие (в данном случае, добавляешь втонумерацию страниц), останавливаешь макрос, открываешь его в редакторе и изучаешь.


Название: Re: Нумерация страниц в документе MS Word
Отправлено: ssoft от Сентябрь 24, 2012, 16:51
Вообще совет правильный - через запись макроса вернее, а так нужно вставить специальное поле {PAGE}.


Название: Re: Нумерация страниц в документе MS Word
Отправлено: Yegor от Сентябрь 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}
?


Название: Re: Нумерация страниц в документе MS Word
Отправлено: ssoft от Сентябрь 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


Название: Re: Нумерация страниц в документе MS Word
Отправлено: Yegor от Сентябрь 25, 2012, 13:01
В документации нашел макрос для автоматической расстановки нумерации страниц.

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

End Sub

Проблема решена.