首页 > 解决方案 > 状态栏消息文本的 IF 条件有什么问题

问题描述

我正在尝试创建一个脚本来从 Excel 文档中输入 SAP 中的事务。有时,某些事务需要执行不同的操作,我在下面的代码中对此进行了描述。

我已经尝试过else, else if, if, 和if not条件。我预计我的语法在某处不正确。

我希望我的 VBS 继续运行并根据 SAP 底部是否打印“无法交付订单(请参阅长文本)”执行一项或另一项操作,直到电子表格上没有更多行。

非常感谢任何帮助或建议。

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
Dim objExcel
Dim objSheet, intRow, i
Set objExcel = GetObject(,"Excel.Application") 
Set objSheet = objExcel.ActiveWorkbook.ActiveSheet
For i = 2 to objSheet.UsedRange.Rows.Count 
    COL1 = Trim(CStr(objSheet.Cells(i, 1).Value)) 'ColumnA
    COL2 = Trim(CStr(objSheet.Cells(i, 2).Value)) 'ColumnB
    COL3 = Trim(CStr(objSheet.Cells(i, 3).Value)) 'ColumnC
    COL4 = Trim(CStr(objSheet.Cells(i, 4).Value)) 'ColumnD
    session.findById("wnd[0]/usr/ctxtLIKP-VSTEL").text = COL1
    session.findById("wnd[0]/usr/ctxtLV50C-DATBI").text = COL3
    session.findById("wnd[0]/usr/ctxtLV50C-VBELN").text = COL2
    session.findById("wnd[0]/usr/ctxtLV50C-VBELN").caretPosition = 7
    session.findById("wnd[0]/tbar[0]/btn[0]").press

    ' If sbar prints below message

    If Session.FindById("wnd[0]/sbar").Text <> "Order cannot be delivered (see long text)" Then ...
        session.findById("wnd[0]/tbar[0]/btn[3]").press

    ' Else save SAP transaction and restart until conclusion of spreadsheet

    Else
        session.findById("wnd[0]/tbar[0]/btn[11]").press
    End If
Next

标签: excelvbscriptsap-gui

解决方案


对于初学者,您的代码没有提到要在 SAP 中输入的任何事务。例如 :

session.findById("wnd[0]").maximize
session.findById("wnd[0]/tbar[0]/okcd").Text = "/nme32k" 'Request transaction ME32K
session.findById("wnd[0]").sendVKey 0 'Press 'enter'
session.findById("wnd[0]/usr/ctxtRM06E-EVRTN").Text = Col1 'Outline Agreement number
session.findById("wnd[0]").sendVKey 0 'Press 'enter'

您可以在 if = 'specific status bar text' 之后简单地添加您的代码(其他操作)


推荐阅读