无法从Winword文档获取超链接:TYPE MISMATCH

问题描述

我的MS Office COM加载项中包含以下代码,以浏览winword文档中的所有超链接,然后解析它们:

.sticky_col {
    position: -webkit-sticky;
    position: sticky;
    left:0;
    background-color: white;
}

调用raw_Item()时的结果(hr)为80020005(disP_E_TYPEMISMATCH)。当我浏览Shapes时,使用这样的代码没有问题。

有人可以帮助我吗?

解决方法

最后,找到答案。有多少个集合具有Office应用程序,所以有很多方法可以对其进行迭代。在这里,我们可以像下面这样进行操作,手动分配VARIANT类型的索引,而不是使用枚举器:

CComQIPtr<MSWORD::Hyperlinks> hylinks = doc->Hyperlinks;  // CComQIPtr<_Document> doc
ATLASSERT(hylinks);

for (int i = 1; i <= hylinks->Count; i++)
{
    VARIANT ind;
    ind.iVal = i;
    ind.vt = VT_I2;

    CComQIPtr<MSWORD::Hyperlink> link;
    ATLASSERT(link);
    link = hylinks->Item(&ind);
    
    // do your magic
}