SAP GUI 脚本错误,“集合的枚举器找不到具有指定索引的元素。”

Posted

技术标签:

【中文标题】SAP GUI 脚本错误,“集合的枚举器找不到具有指定索引的元素。”【英文标题】:SAP GUI Scripting Error, "The Enumerator of the collection cannot find an element with the specified index." 【发布时间】:2016-08-13 14:31:25 【问题描述】:

几周前,我通过 SAP 的内置 GUI 脚本功能生成了一个脚本,然后将 vba 放入一个 excel 文档并将其附加到一个按钮上。

这几个星期都很好,但是现在当我按下按钮时,我得到了这个错误: "The enumerator of the collection cannot find en element with the specified index." 在写着Set session = Connection.Children(0) 的那一行 这是一段sn-p代码

If Not IsObject(Sap_Application) Then
    Set SapGuiAuto = GetObject("SAPGUI")
    Set Sap_Application = SapGuiAuto.GetScriptingEngine
End If
If Not IsObject(Connection) Then
    Set Connection = Sap_Application.Children(0)
End If
If Not IsObject(session) Then
    Set session = Connection.Children(0) 'This is the line that causes the error
End If
If IsObject(WScript) Then
    WScript.ConnectObject session, "on"
    WScript.ConnectObject Sap_Application, "on"
End If

我已打开 SAP 并已登录,并且 sn-p 中的所有代码都是由 SAP gui 脚本生成的。

我尝试了一些我在网上看到的解决方案(比如将我的 sap 安装文件夹中的一些 ocx 文件添加到我的 excel 插件中),但似乎没有任何效果。

我想知道这里是否有人遇到过类似的问题,并且知道如何在我的 vba 中成功打开 SAP 会话。

从评论中编辑:

当我检查连接对象时,这就是我所看到的。看起来儿童长度为 0。

【问题讨论】:

如果无法建立连接,Set Connection = Sap_Application.Children(0) 行会抛出错误吗?您可以使用调试器、Watches 窗口来检查您获得的对象。你应该可以点击Connection.Children 我在执行错误的行之前截取了调试器的屏幕截图 所以看起来 Children 是空的,但我不确定为什么会这样。我是否错误地打开了 SAP? 【参考方案1】:

遇到了同样的问题并找到了这个帖子,所以我用对我有用的解决方案来恢复它:

脚本可能已经失效。 sapgui/user_scripting 必须设置为 true

【讨论】:

【参考方案2】:

我认为我安装的其他东西(或者甚至可能是我公司的更新脚本)搞砸了安装 SAP 时安装的 vba 支持。

重新安装 SAP Logon 应用程序解决了我的问题

(如果其他人对为什么会发生这种情况给出更好的理由,我会接受这个答案)

【讨论】:

【参考方案3】:

我知道它很旧,但可能会对其他人有所帮助。 我不知道这是什么原因,突然我的脚本开始出现问题。我记录了一个新操作,以查看 SAP 将为这些操作编写什么(因为该部分代码是连接的标准代码)。 同样的代码,同样的问题。

修复(或至少是临时的): 更改正在搜索的孩子的号码。 之前的代码:

*Set Connection = Sap_Application.Children(0)*

新代码:

*Set Connection = Sap_Application.Children(1)*

不知道有什么区别,我知道如果你也改变了这一行的数字:

*Set session = Connection.Children(0) 'This is the line that causes the error*

执行发生在第二个会话中,如果你改变了这个,也必须改变上一行代码。

希望对你有帮助!

【讨论】:

【参考方案4】:

请检查是否启用了脚本。当您启用客户端级脚本时,如果服务器重新启动,它会自动重置。 你可能在沙盒或演示系统上比生产盒更经常遇到这个问题:-)

【讨论】:

以上是关于SAP GUI 脚本错误,“集合的枚举器找不到具有指定索引的元素。”的主要内容,如果未能解决你的问题,请参考以下文章

SAP GUI是啥

Python结合SAP GUI Script操作SAP

SAP GUI 一些实用技巧分享

Python结合SAP GUI Script操作sap的简易教程

SAP GUI个性化设置

SAP-GUI设置显示 下拉框的键值