2013-10-09 83 views
0

我不熟練使用VBA,但需要使用microsoft the documentation form msdn的文檔來檢索word文檔中的頁面數量。我嘗試了以下代碼片段中的內容:Qt ActiveX檢索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錯誤:頁面編號:d中沒有這樣的屬性:\ gakwandi.docx [未知]候選人是:.....這表明我以某種方式得到語法錯誤的地方。我正在跳過一個更有經驗的Windows編程的人會指出我可能做錯了什麼。

謝謝。

回答

0

我能夠把一段代碼放在一起以獲得我想要的東西。只需留下來以防其他人需要這樣做。再次感謝KazJaw.Your的輸入真的很有幫助。

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

感謝您的回答,但retreives的ActiveDocument已經打開的話document.Is有可能中檢索在未打開一個DOCX頁數就像我做了d:在\\ gakwandi.docx上面的代碼片段。感謝你的寶貴時間。 – musimbate

+0

在VBA不是,但我不知道在這種情況下的C++ ... –

+0

再次感謝,有沒有一個關於WORD VBA的好文檔,你可以推薦理解單詞對象模型,也可以運行在視覺工作室套件是否正確?我只想做簡單的文檔操作。我想如果我能從VBA做到這一點,很容易找出我在C++中做錯了什麼。 – musimbate