Qt ActiveX извлекает количество страниц в текстовом документе

0

Я не владею VBA, но мне нужно использовать документацию из microsoft для формы документации msdn для извлечения количества страниц в документе Word. Я пробовал такие вещи, как в приведенном ниже фрагменте:

 mWordDoc=new CustomQAxWidget("d:\\gakwandi.docx",0);

 QAxObject* selection = mWordDoc->querySubObject( "Selection" );

 QAxObject* pageNumbers = selection ->querySubObject( "PageNumbers" );

 int numberOfPages = pageNumbers->property("Count").toInt();

Но я получаю ошибки, такие как QAxBase :: dynamicCallHelper: PageNumbers: Нет такого свойства в d:\gakwandi.docx [unknown] Кандидаты:....., который предполагает, что я каким-то образом неправильно интерпретирую синтаксис. Я прыгал кем-то более опытный с программированием окон, hepl указывает, что я могу делать неправильно.

Благодарю.

Теги:
ms-word
qt
word-vba

2 ответа

0
Лучший ответ

Я как мог скомпоновать часть кода, чтобы получить то, что я хотел. Просто оставив его здесь, если кто-то еще должен сделать то же самое. Спасибо снова KazJaw. Ваш вклад был действительно полезен.

QAxObject*  word = new QAxObject("Word.Application", this);

//2.OPEN THE DOCUMENT
QAxObject*    doc = word->querySubObject("Documents");
doc->dynamicCall("Open(QVariant)", "d:\\gakwaya11.docx");
doc->setProperty("Visible",false);
//3.GET TO THE CONTENTS
QAxObject * activeDocument=word->querySubObject("ActiveDocument");

QAxObject * content=activeDocument->querySubObject("Content");

int mNumberOfPages = content->dynamicCall("Information(wdNumberOfPagesInDocument)").toInt();

//doc->dynamicCall("SaveAs (const QString&)", QString("d:\\karamage.docx"));
doc->dynamicCall("Close (boolean)", false);
word->dynamicCall("Quit (void)");
0

В Word VBA вы можете проверить количество страниц таким образом:

? ActiveDocument.Range.Information(wdNumberOfPagesInDocument)

или

? ActiveDocument.Content.Information(wdNumberOfPagesInDocument)

Я не знаю, как добавить его в синтаксис C++, но надеюсь, что вы сможете понять это самостоятельно.

  • 0
    Спасибо за ответ, но ActiveDocument получает уже открытый текстовый документ. Можно ли восстановить количество страниц на не открытом docx? Как я это сделал на d: \\ gakwandi.docx в приведенном выше фрагменте. Еще раз спасибо за ваше время.
  • 0
    в VBA нет, но я не знаю о C ++ в такой ситуации ...
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню