2016-04-20 34 views
1

幾周前,我通過SAP內置的GUI腳本功能生成了一個腳本,然後將該vba放入一個excel文檔並將其附加到按鈕上。SAP GUI腳本錯誤,「集合的枚舉器找不到具有指定索引的元素。」

現在這個工作了幾周完全正常,但是當我按下按鈕,我得到這個錯誤: "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

+0

如果無法建立連接,「Set Connection = Sap_Application.Children(0)」行是否會引發錯誤?您可以使用調試器,手錶窗口來檢查您獲得的對象。您應該可以點擊「連接」。兒童' –

+0

我在執行錯誤之前執行了調試器的截圖 – dustinroepsch

+0

所以它看起來像兒童是空的,但我不知道爲什麼會這樣。 我是否錯誤地打開SAP? – dustinroepsch

回答

0

我想別的東西,我安裝(或甚至是我公司的更新腳本),搞砸了,當你安裝SAP已安裝VBA支持。

重新安裝SAP登錄應用固定我的問題

(如果別人提供了一個更好的理由爲什麼會這樣,我會接受這個答案)

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* 

執行發生在第二次會議中,如果你確實改變了這一次,還必須更改上一行代碼。

希望它有幫助!