0

範囲を設定して、ドキュメントの現在のページを取得する必要があります。私はそれが可能であることがわかりました:

Range.Information(wdActiveEndPageNumber)     //example in C#

しかし、私はそれに問題があります。ドキュメントでは、情報はプロパティとして表示されます。だから私が使うとき

QString number = myRange->property("Information(wdActiveEndPageNumber)").toString()

何も得られません。dynamicCallも試しましたが、どちらも機能しません。TextまたはStartのような単純なプロパティは完全に機能しますが、これらの列挙をどうするかわかりません。

コード全体:

QAxObject *word, *doc;
word = new QAxObject("Word.Application", this);
word->setProperty("DisplayAlerts", false);
word->setProperty("Visible", true);
doc = word->querySubObject("Documents");
doc->dynamicCall("Open(const QString&)", "path to file");
QAxObject *act = word->querySubObject("ActiveDocument");
QAxObject *next = act->querySubObject("Content");
next->dynamicCall("Select()");
next->dynamicCall("Copy()");
QClipboard *clip = QApplication::clipboard();
myTextEdit->setText(clip->text());
QString number = next->property("Information(3)").toString();
QMessageBox::information(this, tr("cos"), tr("%1").arg(number)); //here i need to know how many pages i've got
4

2 に答える 2

1

ここでこの質問に対する本当にクールな答えを見つけました: http://www.qtforum.org/article/31970/how-do-i-get-use-the-ienumerable-interface-in-qt.html

ここでまた答え。あなたの列挙型を含むreturnListで..

QAxObject *enum1 = returnList->querySubObject("_NewEnum");
IEnumVARIANT* enumInterface; //to get this, include <windows.h>
enum1->queryInterface(IID_IEnumVARIANT, (void**)&enumInterface);
enumInterface->Reset(); //start at the beginning of the list.
for (int i=0;i<returnList->dynamicCall("Count").toInt();i++)
{
    VARIANT *theItem;
    enumInterface->Next(1,theItem,NULL);
    QAxObject *item = new QAxObject((IUnknown *)theItem->punkVal);
    qDebug() << item->dynamicCall("Caption");
}
于 2014-11-07T14:07:47.963 に答える
1

さて、多くの調査の結果、情報列挙型から値を取得する可能性はまだないことがわかりました。Qt の将来のバージョンになるかもしれませんが、最近では Visual Basic でライブラリを作成し、C++ コードから関数を呼び出す必要がありました。

于 2012-09-02T16:27:05.813 に答える