Hallo zusammen
Ich exportiere Daten aus SAP in ein Excel «Export-File», welches ich bei jedem Export wieder überschreibe. Nachfolgender Code dazu funktioniert. Das Resultat ist ein geöffnetes Excel mit den Daten. Das ganz mache ich mit einem Makro, welches vom Excel «Master-File» aus ausgeführt wird, da ich anschliessend im «Master-File» noch weitere Bearbeitungsschritte ausführen will.
Sub complete_process()
'Run_SAP_Script
'folgenden Block fix setzen
Dim SapGuiAuto As Object
Dim SAPApp As Object
Dim SAPCon As Object
Dim session As Object
Set SapGuiAuto = GetObject("SAPGUI")
Set SAPApp = SapGuiAuto.GetScriptingEngine
Set SAPCon = SAPApp.Children(0)
Set session = SAPCon.Children.ElementAt(0)
'ab hier mein SAP Skript
session.findById("wnd[0]").maximize
session.findById("wnd[0]/usr/cntlIMAGE_CONTAINER/shellcont/shell/shellcont[0]/shell").selectedNode = "F00182"
session.findById("wnd[0]/usr/cntlIMAGE_CONTAINER/shellcont/shell/shellcont[0]/shell").doubleClickNode "F00182"
session.findById("wnd[0]/tbar[1]/btn[17]").press
session.findById("wnd[1]/tbar[0]/btn[8]").press
session.findById("wnd[1]/usr/cntlALV_CONTAINER_1/shellcont/shell").currentCellRow = 1
session.findById("wnd[1]/usr/cntlALV_CONTAINER_1/shellcont/shell").selectedRows = "1"
session.findById("wnd[1]/usr/cntlALV_CONTAINER_1/shellcont/shell").doubleClickCurrentCell
session.findById("wnd[0]/tbar[1]/btn[8]").press
session.findById("wnd[1]/tbar[0]/btn[0]").press
session.findById("wnd[0]/usr/cntlGRID1/shellcont/shell/shellcont[1]/shell").setCurrentCell 8, "TEXT"
session.findById("wnd[0]/usr/cntlGRID1/shellcont/shell/shellcont[1]/shell").selectedRows = "8"
session.findById("wnd[0]/usr/cntlGRID1/shellcont/shell/shellcont[1]/shell").contextMenu
session.findById("wnd[0]/usr/cntlGRID1/shellcont/shell/shellcont[1]/shell").selectContextMenuItem "&XXL"
session.findById("wnd[1]/tbar[0]/btn[0]").press
session.findById("wnd[1]/usr/ctxtDY_PATH").SetFocus
session.findById("wnd[1]/usr/ctxtDY_PATH").caretPosition = 8
session.findById("wnd[1]").sendVKey 4
session.findById("wnd[2]/usr/ctxtDY_PATH").Text = "T:\\Pfad1"
session.findById("wnd[2]").sendVKey 4
session.findById("wnd[3]/usr/ctxtDY_FILENAME").Text = "Export-File.XLSX"
session.findById("wnd[3]/usr/ctxtDY_FILENAME").caretPosition = 38
session.findById("wnd[3]/tbar[0]/btn[11]").press
session.findById("wnd[2]").Close
session.findById("wnd[1]/usr/ctxtDY_FILENAME").SetFocus
session.findById("wnd[1]/usr/ctxtDY_FILENAME").caretPosition = 43
session.findById("wnd[1]/tbar[0]/btn[11]").press
End Sub
In einem zweiten Makro, welches ich ebenfalls vom «Master File» aus ausführe, habe ich programmiert, das «Export-File» nach dem SAP-Export abzuspeichern und zu schliessen. Dieses Makro funktioniert für sich auch gut.
Sub close_Export_file
' Makro Close_Export_file
Workbooks("Export-File.xlsx").Close SaveChanges:=True
End Sub
Mein Problem ist nun aber wenn ich die beiden Codes im Makro des «Master-Files» zusammenführe, funktioniert dies nicht mehr, da das Makro das «Export-File» bereits schliessen will, bevor es aus SAP exportiert werden konnte. Wie könnte ich dies lösen?
Mit etwas Recherche bin ich auf folgenden Code mit gestossen, der das Makro pausieren lässt. Dies hat aber auch nicht geholfen, da während des Pausierens offenbar auch der SAP-Export pausiert wurde. Der Fehler blieb somit derselbe.
sub appl_wait
Application.Wait (Now + TimeValue("0:00:50"))
End Sub
Wie ihr vielleicht merkt, bin ich eher Anfänger, falls ihr Tips habt, wie das Ganze einfacher gelöst werden kann, bin ich dafür natürlich auch dankbar.
Vielen Dank.
Hausi
|