在 FindById() 函数中用 VBA 变量替换客户 ID?

Replace customer ID with VBA variable in FindById() function?

提问人:Ade 提问时间:10/12/2022 最后编辑:SuncatcherAde 更新时间:10/13/2022 访问量:133

问:

我正在尝试使用 VBA 自动化我的一些 SAP 工作。我卡在登录中,因为客户价格文件的脚本是

session.FindById("wnd[1]/usr/cntlPRM_CC3000_1/shellcont/shell").SapEvent "Frame0", "sapbu_cl= &sapse_cl= &sapin_cl=S1F1E6~L&evtcode=ENTR&scroll_pos=0&S1F1E1L=2000&S1F1E2L=10&S1F1E3L=**98701**&S1F1E4L=&S1F1E4H=&S1F1E5L=&S1F1E5H=&S1F1E6L=12.10.2022", "sapevent:S1F1" 

这适用于单个客户 ID,但我想遍历(表 1,从 A2 开始)中指定了不同 ID 的所有客户。因此,在此脚本中,我需要使用变量来替换客户 ID 。我找到了使用说明。但是,它会将 Customer 单元格留空。98701Cvar(Customer)

代码如下:

Dim i As Integer
Dim Customer As String

i = 2

Do Until IsEmpty(Cells(i, 1))

  Customer = Range("A" & i)

  On Error Resume Next

  ...
  session.FindById("wnd[1]/usr/cntlPRM_CC3000_1/shellcont/shell").SapEvent "Frame0", _
    "sapbu_cl= &sapse_cl= &sapin_cl=S1F1E6~L&evtcode=ENTR&scroll_pos=0&S1F1E1L=2000" _
    & "&S1F1E2L=10&S1F1E3L=Cvar(Customer)&S1F1E4L=&S1F1E4H=" _
    & "&S1F1E5L=&S1F1E5H=&S1F1E6L=12.10.2022", _
    "sapevent:S1F1" 
  ...

  i = i + 1
Loop

Session.FindById(...)似乎是字符串,我不能包含 variant 作为它的值。

单元格也有一个字段名称,可以直接写入或指出。

SAP field ID

但是,在这种情况下,我找不到有关如何直接指向特定字段名称或将变体包含在字符串中的说明。也欢迎其他解决方案!Session.FindById

Excel VBA 字符串 变体 SAP-GUI

评论


答:

1赞 Storax 10/13/2022 #1

您应该改用并正确连接字符串CStr

session.FindById("wnd[1]/usr/cntlPRM_CC3000_1/shellcont/shell").SapEvent "Frame0", _
    "sapbu_cl= &sapse_cl= &sapin_cl=S1F1E6~L&evtcode=ENTR&scroll_pos=0&S1F1E1L=2000" _
    & "&S1F1E2L=10&S1F1E3L=" & CStr(Customer) & " S1F1E4L=&S1F1E4H=" _
    & "&S1F1E5L=&S1F1E5H=&S1F1E6L=12.10.2022", _
    "sapevent:S1F1"

也许以下链接阐明了字符串连接的主题

如何在VBA中连接字符串?

连接包含 “ 和 & 字符的字符串