VBA做WhatsApp自动化时报错2047023170(800706be)远程过程调用失败
你遇到的800706be错误本质是Internet Explorer的COM组件调用失效,微软已经在2022年正式停止支持IE浏览器,后续Windows系统更新会逐步禁用、移除IE的相关组件接口,此前能正常运行的代码受系统更新影响出现该报错属于预期情况。
可通过以下方案解决问题:
- 废弃IE对象调用逻辑,直接使用VBA内置
Shell函数唤起WhatsApp协议,替换对应代码段即可
原来的出错代码段:
替换为:Set IE = CreateObject("InternetExplorer.Application") IE.navigate strPostData
该逻辑直接调用系统默认程序处理whatsapp协议,不依赖IE组件,可直接解决RPC调用失败问题。Shell "cmd /c start " & Chr(34) & strPostData & Chr(34), vbHide - 补充参数编码逻辑,避免特殊字符导致的传参异常
现有代码未对手机号、消息内容做URL编码,若存在中文、空格、&、#等特殊字符会导致唤起WhatsApp后参数丢失,可补充如下VBA辅助函数对参数编码后再拼接strPostData:
拼接参数时改为:Function URLEncode(ByVal str As String) As String Dim i As Integer, code As Integer Dim char As String For i = 1 To Len(str) code = Asc(Mid(str, i, 1)) Select Case code Case 48 To 57, 65 To 90, 97 To 122, 45, 46, 95, 126 URLEncode = URLEncode & Mid(str, i, 1) Case Else URLEncode = URLEncode & "%" & Hex(code) End Select Next End FunctionstrPostData = "whatsapp://send?phone=" & URLEncode(strPhoneNumber) & "&text=" & URLEncode(strMessage) - 清理冗余逻辑避免资源泄漏
原有代码每次循环都新建IE对象但未执行关闭、释放操作,运行多次后会堆积大量无效进程占用系统资源,替换为Shell调用后可直接删除所有IE对象相关的声明、创建逻辑,进一步降低出错概率。
内容的提问来源于stack exchange,提问作者Anureet Kaur
相关产品推荐
相关产品推荐

