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 脚本错误,“集合的枚举器找不到具有指定索引的元素。”的主要内容,如果未能解决你的问题,请参考以下文章