excel - 创建 Shell32.dll 对象时出现 VBA 运行时错误 429
问题描述
我正在尝试编写一个 VBA 函数,它将获取特定已打开 IE 窗口的句柄。经过一番谷歌搜索后,我找到了以下代码:-
Public Function FindIEObject(target As String) As InternetExplorerMedium
Set objShell = CreateObject("Shell.Application")
IE_count = objShell.Windows.Count
For x = 0 To (IE_count - 1)
On Error Resume Next
my_url = objShell.Windows(x).Document.Location
my_title = objShell.Windows(x).Document.Title
If InStr(my_title, target) > 0 Then
Set FindIEObject = objShell.Windows(x)
Set myIE = objShell.Windows(x)
Exit For
End If
Next
End Function
此代码在我的计算机上运行良好,但是当我在客户端的 Citrix 环境中部署该工具时,我在第 3 行收到错误“ActiveX 组件无法创建对象”
我在谷歌和基础上做了一些研究,在 Citrix 管理员的帮助下 - 技术支持人员将 windows/system32 文件夹中的 shell32.dll 文件替换为新的副本并重新注册。
完成此操作后,我希望代码运行良好,但我仍然收到相同的运行时错误 429“ActiveX 组件无法创建对象”。
请如果有人可以帮助我了解需要做什么才能使代码正常工作。提前致谢。
普雷曼舒
解决方案
当组件对象模型 (COM) 无法创建请求的自动化对象并且自动化对象因此对 Visual Basic 不可用时,会发生此错误。此错误不会在所有计算机上发生。
在 Visual Basic 中,错误 429 有多种原因。如果满足以下任一条件,则会发生错误:
(一)申请有误。
(2) 系统配置有误。
(3) 缺少组件。
(4)有损坏的部件。
您可以尝试检查代码、检查自动化服务器和检查系统以缩小问题范围。
您可以尝试参考下面的链接,可能会给您一些更有用的信息。
推荐阅读
- python - 使用 OpenCV 获取文本方向
- web - 如何在ckeditor 5中添加像ms-word这样的符号和方程
- javascript - 如何在 Dialogflow Webhook 中返回对对话的 API 响应
- qt - Qt Destructor 不会断开信号/插槽
- git - 部分解决合并冲突并查看新的差异/冲突
- javascript - Angular:装饰器不支持函数表达式
- c# - 放置在滚动查看器中时,WPF Datagrid 虚拟化被禁用
- php - 如何使用 Codeigniter 中的不同按钮以单个表单上传多个图像和文本文件?
- html - 两个 div 并排:第一个粘贴,第二个居中
- javascript - 了解 AWS AppSync JavaScript SDK 中的 Apollo 客户端缓存和乐观 UI