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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了有没有办法在下面的代码中找到文本而不是Key相关的知识,希望对你有一定的参考价值。

在下面的代码中,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"
答案

您似乎在组合框中搜索事务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

以上是关于有没有办法在下面的代码中找到文本而不是Key的主要内容,如果未能解决你的问题,请参考以下文章

我在下面的文本框中输入文本后如何将网页下载为 .html/.png 是我的代码

Uicollectionview 单元格仅环绕文本

在 D3 中环绕文本

使用javascript仅更改元素中的文本[重复]

有没有办法找到 min 函数选择的变量的名称?

有没有办法强制赛普拉斯在同一个标​​签而不是另一个标签中打开