我创建了一个插件的微软办公室,它的工程罚款Office 2019 Excel & WPS Office 2019 ET,但它有问题的微软办公室2013.
这里是描述:
rst = disp->QueryInterface(__uuidof(Excel::_Worksheet), (void**)&sheet);
disp->Release();
Excel::Range* rawRange = nullptr;
Excel::IRange* rows = nullptr;
rst = sheet->get_Rows(&rawRange);
rst = rawRange ->QueryInterface( __uuidof(Excel::IRange), (void**)&rows);
get_Rows
运行正常,返回S_OK,但是Range::QueryInterface返回E_NOINTERFACE
,这很奇怪!我不明白,我错过了什么吗?
有许多位置称为QueryInterface
方法,但只有Range
类型查询IRange
类型会失败。
Office 2019 & WPS 2010工作正常,已经重新安装了Office 2013,但仍然没有工作。也许是微软的bug?
1条答案
按热度按时间icnyk63a1#
正如
@Joseph Willcoxson
所说,Range
类型没有实现IRange
接口,但它实现了特性,我们可以使用IDispatch
接口Invoke
方法来做同样的事情。我想分享我的实用程序代码。我们可以这样使用它