Unten ist Code, den ich online gefunden habe, um sich bei SAP anzumelden, um Daten mit VBA zu exportieren. Ich habe es zugeschnitten, um für das zu arbeiten, wofür ich es brauche und es funktioniert großartig. Nur ein Problem, ich kann nicht herausfinden, wie alle Fenster (einschließlich des Anmeldefensters) mit .iconify ausgeblendet werden.VBA 2010 - Verstecke alle SAP Fenster mit .conify
Ich habe grundsätzlich Session.findById("wnd[0]").iconify
oder Session.findById("wnd[1]").iconify
im gesamten Code hinzugefügt; scheint übertrieben. Die meisten Fenster werden aufblinken und dann ausblenden, aber einige nicht.
Es wäre schön, wenn es eine Möglichkeit gäbe, ALLE Fenster komplett zu verstecken, sogar dort, wo sie nicht aufblitzen. Irgendwelche Ideen?
Auch das Logon-Pad bleibt offen, aber ich habe einen Weg gefunden, es mit einem API-Code loszuwerden. Gibt es einen besseren Weg, dies zu tun?
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
Vielen Dank im Voraus!
* vielleicht * in der Lage sein, dies zu tun mit dem [EnumChildWindows] (https://msdn.microsoft.com/en-us/library/windows/desktop/ms633494 (v = vs.85) .aspx) und [ShowWindow] (https://msdn.microsoft.com/en-us/library/windows/desktop/ms633548 (v = vs.85) .aspx) API-Funktionen. Sie müssen überprüfen, ob Sie das Anmeldefenster ausblenden können, wenn es modal ist. Ich kann mich nicht ohne weiteres erinnern. – Comintern
Danke Komintern, ich werde einen Blick darauf werfen. – jmeddy