SAP GUI Scripting Error,"集合的枚举器无法找到具有指定索引的元素。"

时间:2016-04-20 18:07:47

标签: excel vba sap

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

这几个星期完美无缺,但是现在当我按下按钮时我得到了这个错误: "The enumerator of the collection cannot find en element with the specified index."Set session = Connection.Children(0) 这是一段代码

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并且已登录,并且代码段中的所有代码都是由SAP gui脚本生成的。

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

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

评论编辑:

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

Debugger View

3 个答案:

答案 0 :(得分:0)

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

重新安装SAP Logon应用程序修复了我的问题

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

答案 1 :(得分:0)

我知道它已经老了,但可能会帮助别人。 我不知道这个的原因,开始出现我的脚本问题。我记录了一个新操作,以查看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*

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

希望它有所帮助!

答案 2 :(得分:0)

遇到相同的问题并找到了该线程,所以我使用对我有用的解决方案来恢复它:

脚本可能被迷住了。 sapgui / user_scripting必须设置为true