下面是我在网上找到的用于登录SAP以使用VBA导出数据的代码。我已经根据我的需要量身定做它,效果很好。只有一个问题,我似乎无法弄清楚如何使用.iconify隐藏所有窗口(包括登录窗口)。
我在代码中基本上添加了Session.findById("wnd[0]").iconify
或Session.findById("wnd[1]").iconify
;似乎过分了。大多数窗口会闪烁,然后隐藏,但也有一些没有。
如果有一种方法可以完全隐藏所有窗户,即使它们没有闪开,也会很好。有什么想法吗?
此外,登录垫保持打开状态,但我找到了一种使用某些API代码摆脱它的方法。有更好的方法吗?
Sub SAPextract()
Dim SAPGUI
Dim Applic
Dim connection
Dim Session
Dim WSHShell
Application.DisplayAlerts = False
Shell "C:\Program Files (x86)\SAP\FrontEnd\SAPgui\saplogon.exe", vbNormalFocus
Set WSHShell = CreateObject("WScript.Shell")
Do Until WSHShell.AppActivate("SAP Logon ")
Application.Wait Now + TimeValue("0:00:01")
Loop
Set WSHShell = Nothing
Set SAPGUI = GetObject("SAPGUI")
Set Applic = SAPGUI.GetScriptingEngine
Set connection = Applic.OpenConnection("******", True)
Set Session = connection.Children(0)
Session.findById("wnd[0]").iconify
Session.findById("wnd[0]/usr/txtRSYST-MANDT").Text = "100"
Session.findById("wnd[0]/usr/txtRSYST-BNAME").Text = ******
Session.findById("wnd[0]/usr/pwdRSYST-BCODE").Text = ******
Session.findById("wnd[0]").sendVKey 0
'Session.findById("wnd[0]").maximize
Session.findById("wnd[0]").iconify
Session.findById("wnd[0]/tbar[0]/okcd").Text = "******"
Session.findById("wnd[0]").sendVKey 0
'Session.findById("wnd[0]").maximize
Session.findById("wnd[0]").iconify
Session.findById("wnd[0]/usr/btn[1]").press
Session.findById("wnd[1]").iconify
Session.findById("wnd[1]/usr/tabsTAB_STRIP/tabpSIVA/ssub/1/2/tblSAPLALDBSINGLE/ctxt[1,0]").Text = "******"
Session.findById("wnd[1]/usr/tabsTAB_STRIP/tabpSIVA/ssub/1/2/tblSAPLALDBSINGLE/ctxt[1,1]").Text = "******"
Session.findById("wnd[1]/usr/tabsTAB_STRIP/tabpSIVA/ssub/1/2/tblSAPLALDBSINGLE/ctxt[1,2]").Text = "******"
Session.findById("wnd[1]/usr/tabsTAB_STRIP/tabpSIVA/ssub/1/2/tblSAPLALDBSINGLE/ctxt[1,3]").Text = "******"
Session.findById("wnd[1]/usr/tabsTAB_STRIP/tabpSIVA/ssub/1/2/tblSAPLALDBSINGLE/ctxt[1,4]").Text = "******"
Session.findById("wnd[1]/usr/tabsTAB_STRIP/tabpSIVA/ssub/1/2/tblSAPLALDBSINGLE/ctxt[1,5]").Text = "******"
Session.findById("wnd[1]/usr/tabsTAB_STRIP/tabpSIVA/ssub/1/2/tblSAPLALDBSINGLE/ctxt[1,6]").Text = "******"
Session.findById("wnd[1]/usr/tabsTAB_STRIP/tabpSIVA/ssub/1/2/tblSAPLALDBSINGLE/ctxt[1,7]").Text = "******"
Session.findById("wnd[1]/usr/tabsTAB_STRIP/tabpSIVA/ssub/1/2/tblSAPLALDBSINGLE/ctxt[1,7]").SetFocus
Session.findById("wnd[1]/usr/tabsTAB_STRIP/tabpSIVA/ssub/1/2/tblSAPLALDBSINGLE/ctxt[1,7]").caretPosition = 5
Session.findById("wnd[1]/tbar[0]/btn[8]").press
Session.findById("wnd[0]").iconify
Session.findById("wnd[0]/usr/btn[17]").press
Session.findById("wnd[1]").iconify
Session.findById("wnd[1]/usr/tabsTAB_STRIP/tabpSIVA/ssub/1/2/tblSAPLALDBSINGLE/ctxt[1,0]").Text = "******"
Session.findById("wnd[1]").iconify
Session.findById("wnd[1]/usr/tabsTAB_STRIP/tabpSIVA/ssub/1/2/tblSAPLALDBSINGLE/ctxt[1,1]").Text = "******"
Session.findById("wnd[1]/usr/tabsTAB_STRIP/tabpSIVA/ssub/1/2/tblSAPLALDBSINGLE/ctxt[1,2]").Text = "******"
Session.findById("wnd[1]/usr/tabsTAB_STRIP/tabpSIVA/ssub/1/2/tblSAPLALDBSINGLE/ctxt[1,3]").Text = "******"
Session.findById("wnd[1]/usr/tabsTAB_STRIP/tabpSIVA/ssub/1/2/tblSAPLALDBSINGLE/ctxt[1,4]").Text = "******"
Session.findById("wnd[1]/usr/tabsTAB_STRIP/tabpSIVA/ssub/1/2/tblSAPLALDBSINGLE/ctxt[1,5]").Text = "******"
Session.findById("wnd[1]/usr/tabsTAB_STRIP/tabpSIVA/ssub/1/2/tblSAPLALDBSINGLE/ctxt[1,6]").Text = "******"
Session.findById("wnd[1]/usr/tabsTAB_STRIP/tabpSIVA/ssub/1/2/tblSAPLALDBSINGLE/ctxt[1,7]").Text = "******"
Session.findById("wnd[1]/usr/tabsTAB_STRIP/tabpSIVA/ssub/1/2/tblSAPLALDBSINGLE").verticalScrollbar.Position = 1
Session.findById("wnd[1]/usr/tabsTAB_STRIP/tabpSIVA/ssub/1/2/tblSAPLALDBSINGLE/ctxt[1,7]").Text = "******"
Session.findById("wnd[1]/usr/tabsTAB_STRIP/tabpSIVA/ssub/1/2/tblSAPLALDBSINGLE").verticalScrollbar.Position = 2
Session.findById("wnd[1]/usr/tabsTAB_STRIP/tabpSIVA/ssub/1/2/tblSAPLALDBSINGLE/ctxt[1,7]").Text = "******"
Session.findById("wnd[1]/tbar[0]/btn[8]").press
Session.findById("wnd[0]").iconify
Session.findById("wnd[0]/usr/ctxt[48]").Text = "******"
Session.findById("wnd[0]/usr/txt[68]").Text = "******"
Session.findById("wnd[0]/tbar[1]/btn[8]").press
Session.findById("wnd[0]").iconify
Session.findById("wnd[0]/usr/cntlGRID1/shellcont/shell").selectColumn "******"
Session.findById("wnd[0]/tbar[1]/btn[40]").press
Session.findById("wnd[0]").iconify
'Export
Session.findById("wnd[0]").iconify
Session.findById("wnd[0]").sendVKey 21
Session.findById("wnd[1]").iconify
Session.findById("wnd[1]/usr/rad[1]").Select
Session.findById("wnd[1]/usr/rad[0]").Select
Session.findById("wnd[1]").iconify
Session.findById("wnd[1]/tbar[0]/btn[0]").press
Session.findById("wnd[1]").iconify
Session.findById("wnd[1]/usr/ctxt[0]").Text = "******"
Session.findById("wnd[1]/usr/ctxt[1]").Text = "******"
Session.findById("wnd[1]/tbar[0]/btn[11]").press
Set Session = Nothing
connection.CloseSession ("ses[0]")
Set connection = Nothing
提前致谢!
答案 0 :(得分:1)
我使用了一种解决方法。
bWindowFound = Wshell.AppActivate("SAP Logon")
if bWindowFound then
Wshell.appActivate "SAP Logon"
WScript.Sleep 200
Wshell.sendkeys "%{F4}"
WScript.Sleep 200
end if
窗口不会关闭,但会落在任务列表中。
此致 ScriptMan