Найти компонент в SAP GUI с помощью VBA - PullRequest
0 голосов
/ 16 января 2020

Я пытаюсь решить относительно простую задачу. Я хотел бы иметь возможность использовать Excel VBA для поиска компонента в окне SAP GUI.

Сценарий можно найти ниже:

If Not IsObject(application) Then
 Set SapGuiAuto  = GetObject("SAPGUI")
 Set application = SapGuiAuto.GetScriptingEngine
End If
If Not IsObject(connection) Then
   Set connection = application.Children(0)
End If
If Not IsObject(session) Then
   Set session    = connection.Children(0)
End If
If IsObject(WScript) Then
   WScript.ConnectObject session,     "on"
   WScript.ConnectObject application, "on"
End If
session.findById("wnd[0]").maximize
session.findById("wnd[0]/tbar[1]/btn[42]").press
session.findById("wnd[1]/usr/txtSEARCH_BY-MATNR").text = "53211"
session.findById("wnd[1]/usr/txtSEARCH_BY-MATNR").caretPosition = 5
session.findById("wnd[1]/tbar[0]/btn[0]").press

Код можно найти ниже :

      More Scripting here
    -----------------------------------------------
    For Each row In [Multi_Lvl_BOM].Rows

        If (Cells(Row_Num, 1).Value = "") Then
            Exit For
        End If

        If (row.Columns(9).Value = "N/A") Then GoTo NextIteration2b

        session.findById("wnd[0]/tbar[1]/btn[42]").press
        -----------------------------------------------------------
            Everything works fine until here

        session.findById("wnd[1]/usr/txtSEARCH_BY-MATNR").text = "53211"
        -----------------------------------------------------------
            On that line Excel Throws an Error

        session.findById("wnd[1]/usr/txtSEARCH_BY-MATNR").caretPosition = 5
        session.findById("wnd[1]/tbar[0]/btn[0]").press

    NextIteration2b:
    Row_Num = Row_Num + 1

Next

Я записал скрипт в SAP, и когда я запускаю его там, он работает нормально. Однако, когда я пытаюсь использовать его в VBA, он работает до тех пор, пока я не попытаюсь вставить текст для поиска. Таким образом, любое взаимодействие с новым открытым окном поиска приведет к ошибке.

Может быть, это просто ссылка, которой я не пользуюсь? Смотрите мои ссылки ниже:

enter image description here

Любая помощь высоко ценится!

...