宏无法通过VBA从SAP识别导出的工作簿

问题描述 投票:0回答:1

我一直在研究SAP GUI脚本来设置自动报告。在我的宏中,我正在运行SAP事务,将它们导出到excel(打开“基础(1)中的工作簿”),然后将该文件中的一些信息复制到我的“宏工作簿”中。但是,有时它会起作用,有时却不起作用。问题是从SAP创建的Excel工作簿位于不同的实例中,因此我的宏无法使用它。

有什么方法可以确保SAP生成的excel始终在同一个实例中?或者让我的宏在其他情况下识别工作簿?

这是我正在使用的代码(WB_Macro是具有宏本身的工作簿,WB_SAP是由SAP生成的worbook):

Dim WB_SAP As Workbook

'Save input in variables
countryCode = Sheets("FBL5N").Cells(2, 10).Value
salesOrganization = Sheets("FBL5N").Cells(2, 11)


'Run SAP transaction
objSess.findById("wnd[0]/tbar[0]/okcd").Text = "fbl5n"
objSess.findById("wnd[0]/tbar[0]/btn[0]").press
objSess.findById("wnd[0]/usr/ctxtDD_BUKRS-LOW").Text = countryCode
objSess.findById("wnd[0]/usr/ctxtDD_BUKRS-LOW").SetFocus
objSess.findById("wnd[0]/usr/ctxtDD_BUKRS-LOW").caretPosition = 4
objSess.findById("wnd[0]/usr/btn%_DD_KUNNR_%_APP_%-VALU_PUSH").press
For i = 1 To size
    objSess.findById("wnd[1]/usr/tabsTAB_STRIP/tabpSIVA/ssubSCREEN_HEADER:SAPLALDB:3010/tblSAPLALDBSINGLE/ctxtRSCSEL_255-SLOW_I[1," & i - 1 & "]").Text = customerCodes(i)
    Next i
objSess.findById("wnd[1]/usr/tabsTAB_STRIP/tabpSIVA/ssubSCREEN_HEADER:SAPLALDB:3010/tblSAPLALDBSINGLE/ctxtRSCSEL_255-SLOW_I[1,1]").caretPosition = 6
objSess.findById("wnd[1]/tbar[0]/btn[8]").press

objSess.findById("wnd[0]/usr/ctxtPA_VARI").Text = "/liber auto"
objSess.findById("wnd[0]/usr/ctxtPA_VARI").SetFocus
objSess.findById("wnd[0]/usr/ctxtPA_VARI").caretPosition = 12
objSess.findById("wnd[0]/tbar[1]/btn[8]").press
objSess.findById("wnd[0]/mbar/menu[0]/menu[3]/menu[1]").Select
objSess.findById("wnd[1]/usr/cmbG_LISTBOX").Key = "08"
objSess.findById("wnd[1]/tbar[0]/btn[0]").press
objSess.findById("wnd[1]/usr/subSUBSCREEN_STEPLOOP:SAPLSPO5:0150/sub:SAPLSPO5:0150/radSPOPLI-SELFLAG[0,0]").Select
objSess.findById("wnd[1]/usr/subSUBSCREEN_STEPLOOP:SAPLSPO5:0150/sub:SAPLSPO5:0150/radSPOPLI-SELFLAG[0,0]").SetFocus
objSess.findById("wnd[1]/tbar[0]/btn[0]").press
objSess.findById("wnd[1]/tbar[0]/btn[0]").press

'Activate and Capture SAP generated workbook
Workbooks("Worksheet in Basis (1)").Activate
Set WB_SAP = ActiveWorkbook
Debug.Print WB_SAP.Name

WB_SAP.Sheets(1).Range("A2").Select
Range(Selection, Selection.End(xlDown)).Select
Range(Selection, Selection.End(xlToRight)).Select
Selection.Copy
objSess.findById("wnd[1]/tbar[0]/btn[0]").press


WB_Macro.Activate
Sheets("FBL5N").Select
Range("Table11[[   CoCd]]").Select
ActiveSheet.Paste
excel vba excel-vba
1个回答
0
投票

这可能与SAP无关。您可能已激活忽略远程请求的选项。

只需在即时窗口中运行即可

Application.IgnoreRemoteRequests = False

顺便说一句,您可以通过使用来改进您的代码

With objSess
   .FindById("wnd[0]/tbar[0]/okcd").Text = "/nfbl5n"


End With
© www.soinside.com 2019 - 2024. All rights reserved.