You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

VBA同模块存在InvokeQueryInterface仍报方法或数据成员未找到错误

问题根因

编译错误的触发原因是参数类型不匹配,具体逻辑如下:

  • 你定义的InvokeQueryInterface函数第一个参数要求是ByVal this As LongPtr指针类型
  • 报错行传入的第一个参数this是IUnknown接口对象类型,没有做指针转换,VBA编译器找不到参数签名匹配的InvokeQueryInterface实现,因此抛出「Method or Data Member Not Found」错误。
修复方案

将报错行的第一个参数用ObjPtr()函数转换为对象指针即可匹配参数要求,修改后的代码行如下:

ElseIf InvokeQueryInterface(ObjPtr(this), riid, ppvObject, defaultQIfunction) = S_OK Then
补充说明

VBA编译时的方法匹配会严格校验参数的数量、类型、传递方式(ByVal/ByRef),哪怕函数名称完全一致,只要参数列表不匹配,编译器就会判定找不到对应的方法成员,这种场景下不会触发隐式类型转换,必须手动完成对象到指针的转换。

内容的提问来源于stack exchange,提问作者Greedo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 08:36:03