vba - 如何通过 VBA 在 excel 单元格中返回 SAP 错误消息?
问题描述
我编写了一个使用以下 SAP GUI 的自动化脚本:
objSess.findById("wnd[0]").Maximize
objSess.findById("wnd[0]/tbar[0]/okcd").Text = "flqaf"
objSess.findById("wnd[0]").sendVKey 0
objSess.findById("wnd[0]").sendVKey 17
objSess.findById("wnd[1]/usr/cntlALV_CONTAINER_1/shellcont/shell").CurrentCellColumn = "TEXT"
objSess.findById("wnd[1]/usr/cntlALV_CONTAINER_1/shellcont/shell").SelectedRows = "0"
objSess.findById("wnd[1]/usr/cntlALV_CONTAINER_1/shellcont/shell").DoubleClickCurrentCell
objSess.findById("wnd[0]/usr/ctxtS_BELNR-LOW").Text = W_BPNumber
objSess.findById("wnd[0]/usr/ctxtS_BELNR-LOW").SetFocus
objSess.findById("wnd[0]/usr/ctxtS_BELNR-LOW").caretPosition = 10
objSess.findById("wnd[0]").sendVKey 8
objSess.findById("wnd[0]").sendVKey 0
objSess.findById("wnd[0]/tbar[0]/btn[3]").press
一切正常,但有时问题会在 SAP 中中止,而正是在发生这种情况时,我想通过将术语“错误”写入 excel 单元格来捕获它。
我尝试在 vba 中添加这一行
objSheet.Cells(iRow, 5) = GuiStatusbar.Text
也
objSheet.Cells(iRow, 5) = objSessFindById("wnd[0]/sbar").Text
代码仍然运行良好,但我在第 5 列中的单元格仍然为空。任何想法如何解决这个问题?
解决方案
如果您稍等片刻,它可能会有所帮助。
例如:
...
objSess.findById("wnd[0]").sendVKey 0
waitTill = Now() + TimeValue("00:00:01")
While Now() < waitTill
DoEvents
Wend
if objSess.findById("wnd[0]/sbar").messageType = "E" then 'other types: W, I, S, A
objSheet.Cells(iRow, 5) = objSessFindById("wnd[0]/sbar").Text
end if
objSess.findById("wnd[0]/tbar[0]/btn[3]").press
...
问候, ScriptMan
推荐阅读
- python - 以一种奇怪的方式拆分 csv
- jquery - 何时在 jQuery 中使用 filter() 与 :?
- selenium - 为 Firefox 创建一个虚假的网络摄像头流
- css - 覆盖内联样式
- javascript - 将变量放入 a href 标记
- python - Python 3.7.1 尝试除了在命令行中以错误顺序发生的块
- go - 如何强制客户端使用 http/2?(而不是回退到 http 1.1)
- php - 如何将数据从excel上传并保存到数据库?
- c++ - 重新排列拆分字符串的顺序并放入变量中
- android - 为什么 SVG 文件中的文本属性在资产导入时不会出现在 Android Studio 矢量资产 XML 中