Qt ActiveX检索word文档中的页数

时间:2013-10-09 05:50:24

标签: c++ vba qt ms-word word-vba

我不熟悉VBA,但需要使用microsoft the documentation form 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中没有这样的属性[未知]候选者是:.....这表明我某种方式在某处弄错了语法。我正在跳过更有经验的Windows编程人员会指出我可能做错了什么。

感谢。

2 个答案:

答案 0 :(得分:0)

在Word VBA中,您可以通过这种方式检查页数:

? ActiveDocument.Range.Information(wdNumberOfPagesInDocument)

? ActiveDocument.Content.Information(wdNumberOfPagesInDocument)

我不知道如何将它放在C ++语法中,但希望你可以自己解决它。

答案 1 :(得分: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)");