Export SAP Data won't open workbook while running

六月ゝ 毕业季﹏ 提交于 2021-01-29 02:20:31

问题


I wrote a code to export data from SAP to an Excel workbook. To do that I open the transaction (IW28 in this case), export the file and save it to a specified location. When the file is opened, I want to copy the data from the exported sheet to my own sheet.

The problem is that the exported sheet won't open while I'm running the macro. When I add a breakpoint in my code, the exported sheet opens when the macro stops. Without this breakpoint the exported sheets only opens after the macro had finished.

'Laden van de data uit transactie IW28 naar de sheet
Dim lastcolumn As Long

Application.DisplayAlerts = False
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual

'SAP Variant
SapVariant = "Variant"

'Transaction
Name = IW28

'Current File Location
Map = Application.ActiveWorkbook.Path

If Not IsObject(SapApp) Then
   Set SapGuiAuto = GetObject("SAPGUI")
   Set SapApp = SapGuiAuto.GetScriptingEngine
End If
If Not IsObject(Connection) Then
   Set Connection = SapApp.Children(0)
End If
If Not IsObject(session) Then
   Set session = Connection.Children(0)
End If
If IsObject(WScript) Then
   WScript.ConnectObject session, "on"
   WScript.ConnectObject SapApp, "on"
End If

'Check if file is already open, if so then close the file
If IsOpen(Name & ".xlsx") = True Then Workbooks(Name & ".xlsx").Close

'Open Transaction
session.findById("wnd[0]/tbar[0]/okcd").Text = "/N" & Name
session.findById("wnd[0]").sendVKey 0

'Choose Variant
On Error Resume Next
session.findById("wnd[0]/mbar/menu[2]/menu[0]/menu[0]").Select
session.findById("wnd[1]/usr/txtV-LOW").Text = SapVariant

'Check if variant excists
If Not Err.Number = 0 Then
    VarMsgbox = MsgBox("Selecteer variant " & SapVariant & ", dubbelklik om deze te selecteren en klik dan hieronder op ok (niet eerder!)", vbOKCancel, "Selecteer variant")
    If VarMsgbox = vbCancel Then Exit Sub
Else
    session.findById("wnd[1]/usr/txtENAME-LOW").Text = ""
    session.findById("wnd[1]/usr/txtV-LOW").caretPosition = 10
    session.findById("wnd[1]").sendVKey 0
    session.findById("wnd[1]").sendVKey 8
End If

'Execute Variant
session.findById("wnd[0]").sendVKey 8

'Select all data in SAP
session.findById("wnd[0]/usr/cntlGRID1/shellcont/shell").SelectAll

'Export to Excel
session.findById("wnd[0]/usr/cntlGRID1/shellcont/shell").contextMenu
session.findById("wnd[0]/usr/cntlGRID1/shellcont/shell").selectContextMenuItem "&XXL"
session.findById("wnd[1]/tbar[0]/btn[0]").press

'Add filename and path
session.findById("wnd[1]/usr/ctxtDY_FILENAME").Text = Name & ".xlsx"
session.findById("wnd[1]/usr/ctxtDY_PATH").Text = Map
session.findById("wnd[1]/tbar[0]/btn[11]").press

'Determine lastrow of sheet
Lastrow = Workbooks(Name & ".xlsx").Sheets("Sheet1").Range("B99999").End(xlUp).Row

ThisWorkbook.Sheets(Name).Range("A8:C99999").ClearContents

Workbooks(Name & ".xlsx").Sheets("Sheet1").Range("A2:C" & Lastrow).Copy

ThisWorkbook.Sheets(Name).Range("A8").PasteSpecial xlPasteValues

ThisWorkbook.Sheets("Start").Activate

Application.DisplayAlerts = True
Application.ScreenUpdating = True

回答1:


You could try the following program construction:

Public Name as String

Sub Makro1()
 'Laden van de data uit transactie IW28 naar de sheet
 Dim lastcolumn As Long

 . . .

 session.findById("wnd[1]/tbar[0]/btn[11]").press
 call Makro2
End Sub

Sub Makro2()
 'Determine lastrow of sheet
 Lastrow = Workbooks(Name &    .xlsx").Sheets("Sheet1").Range("B99999").End(xlUp).Row

 ThisWorkbook.Sheets(Name).Range("A8:C99999").ClearContents

 Workbooks(Name & ".xlsx").Sheets("Sheet1").Range("A2:C" & Lastrow).Copy

 ThisWorkbook.Sheets(Name).Range("A8").PasteSpecial xlPasteValues

 ThisWorkbook.Sheets("Start").Activate

 Application.DisplayAlerts = True
 Application.ScreenUpdating = True
End Sub


来源:https://stackoverflow.com/questions/55451800/export-sap-data-wont-open-workbook-while-running

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!