如何解决SAP VBA 自动化 FBL5N
我正在尝试使用来自此 Excel 工作表的数据自动执行交易 FBL5N
中的催款块:
然后我复制并粘贴串联以及与串联相关的发票。
问题是发票是动态的,每个客户的发票编号都不相同,所以我需要为此列进行动态选择,这样它就会复制,直到它面对一个黑色的列,偏移这个黑色并继续工作表的其余部分。
到目前为止的代码:
Sub Main()
'setting the connection with sap
Dim App,Connection,session As Object
Set SapGuiAuto = Getobject("SAPGUI")
Set App = SapGuiAuto.GetScriptingEngine
Set Connection = App.Children(0)
Set session = Connection.Children(0)
'launch a transaction
session.findById("wnd[0]").maximize
session.findById("wnd[0]/tbar[0]/okcd").Text = "/nfbl5n"
session.findById("wnd[0]").sendVKey 0
Dim lastrow As Integer
Dim Z As Long
lastrow = Sheets("Main").Cells(Sheets("Main").Rows.Count,"A").End(xlUp).Row
For Z = 1 To lastrow
'fbl5n dunning block
session.findById("wnd[0]/usr/ctxtDD_KUNNR-LOW").Text = Cells(Z + 1,3).Value
session.findById("wnd[0]/usr/ctxtDD_BUKRS-LOW").Text = "2025"
session.findById("wnd[0]/usr/ctxtDD_KUNNR-LOW").caretPosition = 7
session.findById("wnd[0]/tbar[1]/btn[8]").press
session.findById("wnd[0]/usr/lbl[9,5]").SetFocus
session.findById("wnd[0]/usr/lbl[9,5]").caretPosition = 6
session.findById("wnd[0]").sendVKey 2
session.findById("wnd[0]/tbar[1]/btn[38]").press
session.findById("wnd[1]/usr/ssub%_SUBSCREEN_FREESEL:SAPLSSEL:1105/btn%_%%DYN001_%_APP_%-VALU_PUSH").press
session.findById("wnd[2]/usr/tabsTAB_STRIP/tabpSIVA/ssubSCREEN_HEADER:SAPLALDB:3010/tblSAPLALDBSINGLE/ctxtRSCSEL_255-SLOW_I[1,0]").Text = Cells(Z + 1,13).Value
session.findById("wnd[2]/usr/tabsTAB_STRIP/tabpSIVA/ssubSCREEN_HEADER:SAPLALDB:3010/tblSAPLALDBSINGLE/ctxtRSCSEL_255-SLOW_I[1,1]").SetFocus
session.findById("wnd[2]/usr/tabsTAB_STRIP/tabpSIVA/ssubSCREEN_HEADER:SAPLALDB:3010/tblSAPLALDBSINGLE/ctxtRSCSEL_255-SLOW_I[1,1]").caretPosition = rng
session.findById("wnd[2]/tbar[0]/btn[24]").press
session.findById("wnd[2]/tbar[0]/btn[8]").press
session.findById("wnd[1]/tbar[0]/btn[0]").press
session.findById("wnd[0]").sendVKey 5
session.findById("wnd[0]/tbar[1]/btn[45]").press
session.findById("wnd[1]/usr/ctxt*BSEG-MANSP").Text = "z"
session.findById("wnd[1]/usr/txt*BSEG-SGTXT").Text = Cells(Z + 1,11).Value
session.findById("wnd[1]/usr/txt*BSEG-SGTXT").SetFocus
session.findById("wnd[1]/usr/txt*BSEG-SGTXT").caretPosition = 6
session.findById("wnd[1]/tbar[0]/btn[0]").press
session.findById("wnd[1]/tbar[0]/btn[0]").press
session.findById("wnd[0]/tbar[0]/btn[3]").press
Next
End Sub
Public Function rng()
Dim i As Long
Range("K2").Select
Do Until IsEmpty(ActiveCell)
Selection.copy
ActiveCell.Offset(1,0).Select
Loop
End Function
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。