Обратил внимание на то, что в интернете на форумах достаточно сложно найти информацию о том, как производить поиск и замену текста в Microsoft Word посредством ActiveQt. Для собственного проекта написал следующую процедуру:
void MsWordDocument::replaceString(const QString& oldString, const QString& newString)
Более подробную информацию о передаваемых параметрах можно прочитать на MSDN
void MsWordDocument::replaceString(const QString& oldString, const QString& newString)
{
QAxObject* WordSelection = WordApplication->querySubObject("Selection");
QAxObject* Find = WordSelection->querySubObject("Find");
if (!Find) return;
Find->dynamicCall("ClearFormatting()");
QList<QVariant> params;
params.operator << (QVariant(oldString));
params.operator << (QVariant("0"));
params.operator << (QVariant("0"));
params.operator << (QVariant("0"));
params.operator << (QVariant("0"));
params.operator << (QVariant("0"));
params.operator << (QVariant(true));
params.operator << (QVariant("0"));
params.operator << (QVariant("0"));
params.operator << (QVariant(newString));
params.operator << (QVariant("2"));
params.operator << (QVariant("0"));
params.operator << (QVariant("0"));
params.operator << (QVariant("0"));
params.operator << (QVariant("0"));
Find->dynamicCall("Execute(const QVariant&,const QVariant&,"
"const QVariant&,const QVariant&,"
"const QVariant&,const QVariant&,"
"const QVariant&,const QVariant&,"
"const QVariant&,const QVariant&,"
"const QVariant&,const QVariant&,"
"const QVariant&,const QVariant&,const QVariant&)",
params);
}
Спасибо. Очень помогло :-)
ОтветитьУдалитьВозник вопрос, почему так нельзя:
QAxObject* WordFind = WordApplication->querySubObject("Selection")->querySubObject("Find");
WordFind->dynamicCall("ClearFormatting()");
WordFind->querySubObject("Replacement")->dynamicCall("ClearFormatting()");
WordFind->dynamicCall("SetText(QVariant)","2013");
WordFind->querySubObject("Replacement")->dynamicCall("SetText(QVariant)","9999");
WordFind->dynamicCall("SetForward(bool)",true);
WordFind->dynamicCall("SetWrap(QVariant)",1);
WordFind->dynamicCall("SetFormat(bool)",false);
WordFind->dynamicCall("SetMatchCase(bool)",false);
WordFind->dynamicCall("SetMatchWholeWord(bool)",true);
WordFind->dynamicCall("SetMatchWildcards(bool)",false);
WordFind->dynamicCall("SetMatchSoundsLike(bool)",false);
WordFind->dynamicCall("SetMatchAllWordForms(bool)",false);
WordFind->dynamicCall("Execute(Replace:=const QVariant&)",QVariant(2));