有没有办法在下面的代码中找到文本而不是Key

问题描述 投票:1回答:1

在下面的代码中,Sap正在选择Key 22,但是对于其他用户,Key是不同的,因此我无法使该代码对两个用户都有效。是否可以通过搜索文本找到密钥?

Sub Report_140()
    If Not IsObject(SAP) Then
        Set SapGuiAuto = GetObject("SAPGUI")
        Set SAP = SapGuiAuto.GetScriptingEngine
    End If

    If Not IsObject(Connection) Then
        Set Connection = SAP.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[0]/okcd").Text = "S_Ph0_48000513"
    session.findById("wnd[0]").sendVKey 0
    session.findById("wnd[1]/usr/cmbDYNP4100-DD_USERGROUP").SetFocus
    session.findById("wnd[1]/usr/cmbDYNP4100-DD_USERGROUP").Key = "22"
excel vba excel-vba sap
1个回答
0
投票

您似乎在组合框中搜索事务S_Ph0_48000513的用户组中的某些文本。我为ad hoc查询S_Ph0_48000513尝试了以下代码:

Const KEY_TEXT = "..your user group ..."
Dim k As Long
Dim keyFound As Boolean

    With session
        .findById("wnd[0]/tbar[0]/okcd").Text = "S_Ph0_48000513"
        .findById("wnd[0]").sendVKey 0
        k = 1
        'Careful! If the KEY_TEXT is not found this loop will run into an error
        Do                
            ' Setting the key is slow but right now it seems there is no other way 
            .findById("wnd[1]/usr/cmbDYNP4100-DD_USERGROUP").Key = CStr(k)
            keyFound = InStr(1, .findById("wnd[1]/usr/cmbDYNP4100-DD_USERGROUP").Text, KEY_TEXT)
            k = k + 1
        Loop Until keyFound
    End With
© www.soinside.com 2019 - 2024. All rights reserved.