首页 > 解决方案 > 创建 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 组件无法创建对象”。

请如果有人可以帮助我了解需要做什么才能使代码正常工作。提前致谢。

普雷曼舒

标签: excelvbainternet-explorercitrixshell32.dll

解决方案


当组件对象模型 (COM) 无法创建请求的自动化对象并且自动化对象因此对 Visual Basic 不可用时,会发生此错误。此错误不会在所有计算机上发生。

在 Visual Basic 中,错误 429 有多种原因。如果满足以下任一条件,则会发生错误:

(一)申请有误。

(2) 系统配置有误。

(3) 缺少组件。

(4)有损坏的部件。

您可以尝试检查代码、检查自动化服务器和检查系统以缩小问题范围。

您可以尝试参考下面的链接,可能会给您一些更有用的信息。

自动化 Office 应用程序时收到运行时错误 429


推荐阅读