创建Shell32.dll的对象时出现VBA运行时错误429

时间:2019-04-12 15:28:20

标签: excel vba internet-explorer citrix shell32.dll

我正在尝试编写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组件无法创建对象”

我在google上做了一些研究,并在Citrix Administrator-技术支持人员的帮助下用新的新副本替换了windows / system32文件夹中的shell32.dll文件,并重新注册了它。

这样做之后,我期望代码可以正常运行,但是我仍然收到相同的运行时错误429“ ActiveX组件无法创建对象”。

如果有人可以帮助我理解使代码正常工作需要做什么。预先感谢。

Premanshu

1 个答案:

答案 0 :(得分:0)

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

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

(1)应用程序有误。

(2)系统配置有误。

(3)缺少组件。

(4)组件损坏。

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

您可以尝试参考下面的链接,这可能会为您提供更多有用的信息。

You receive run-time error 429 when you automate Office applications