通过VBA从SAP打印

时间:2017-12-06 00:51:04

标签: excel vba excel-vba printing sap

我有一个脚本,我通过VBA在SAP中完成批量发货。在每个完成发货结束时,我希望SAP打印完成的页面作为确认。

if (keyCode == KeyEvent.KEYCODE_BACK && webViewsupport.canGoBack()) {
    webViewsupport.goBack();
}

我可以让SAP打开打印对话框,但用户仍然需要手动点击"确定"为了实际打印页面。这是一个小小的不便,但我想知道它是否可以。 Print dialogue

如果有的话,我可以使用SendKeys将打印对话框发送到{Enter},但我不知道如何让SAP挂钩到框上发送该命令。< / p>

1 个答案:

答案 0 :(得分:0)

多年来,我们一直在类似的地方使用以下程序代码:

. . .
dim Wshell as Object

set Wshell = CreateObject("WScript.Shell")

on error resume next
Do 
 bWindowFound = Wshell.AppActivate("Print")
 Application.Wait (Now + TimeValue("0:00:01"))
Loop Until bWindowFound

bWindowFound = Wshell.AppActivate("Print")
if (bWindowFound) Then
Wshell.appActivate "Print"
 Application.Wait (Now + TimeValue("0:00:01"))
 Wshell.sendkeys "{ENTER}"
end if

bWindowFound = Wshell.AppActivate("Print")
if (bWindowFound) Then
 Wshell.appActivate "Print"
 Application.Wait (Now + TimeValue("0:00:01"))
 Wshell.sendkeys "{TAB}{ENTER}"
end if

bWindowFound = Wshell.AppActivate("Print")
if (bWindowFound) Then
 Wshell.appActivate "Print"
 Application.Wait (Now + TimeValue("0:00:01"))
 Wshell.sendkeys "{TAB}{TAB}{ENTER}"
end if
'It could be superfluous under certain circumstances.
session.findById("wnd[1]").Close

Application.Wait (Now + TimeValue("0:00:01"))

on error goto 0
. . .

但是,由于您无法知道光标当前所在的位置,因此可以执行所有可能性。但如果你知道,你可以留下一些东西。

此致 ScriptMan