Details
-
Bug
-
Resolution: Incomplete
-
P3: Somewhat important
-
None
-
5.11.2
-
None
-
Windows 10 64 bit
Description
Using QAxObjects to interact with excel as following:
QAxObject* pApp = new QAxObject("Excel.Application", 0);
pDoc = pApp->querySubObject("Workbooks");
pContent = pDoc->querySubObject("Open(QString)", QDir::toNativeSeparators(path));
pVBProject=pContent->querySubObject("VBproject");
pVBComponent=pVBProject->querySubObject("VBComponents");
int macroCount = pVBComponent->property("Count").toInt();
for (int i=1; i<=macroCount; i++) {
qDebug()<<QString("Module #%1 of #%2").arg(i ).arg(pVBComponent->property("Count").toInt()));
QAxObject* module = pVBComponent->querySubObject("Item(int)", i);
if(module==nullptr) continue;
qDebug()<<QString("Module \"%1\"").arg(module->property("Name").toString());
QAxObject* codeModule = module->querySubObject("CodeModule");
if(codeModule==nullptr) continue;
int lineCount=codeModule->property("CountOfLines").toInt(); //<--pVBComponent>property("Count").toInt() will return 0 if placed after this point, only happen for Office 365, what is wrong?
qDebug()<<QString("%1 lines").arg(lineCount);
}
Everything works as expected in Office 2016 and etc, but not in Office 365, where I get:
Module #1 of #7
Module "Module1"
0 lines
Module #2 of #0
Module #3 of #0
Module #4 of #0
Module #5 of #0
Module #6 of #0
Module #7 of #0
After some poking, pVBComponent is actually lost (? ) in the lineCount call as indicated above in the first loop. This only happens with Office 365. What is wrong? Thanks.