点击此处---> 群内免费提供SAP练习系统(在群公告中)
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
脚本专家,
下面显示了我的最终代码,但问题是sap正在运行,并且正在保存诸如"保存数据或将出现任何错误mgs"之类的注释,我需要在excel中添加此注释,请提供帮助。
公共Sub SimpleSAPExport()
将对象的昏暗连接作为
将Myimvalue变种作为
Dim Myvalue2作为变体
将objSheet1当作工作表
Set SapGuiAuto = GetObject(" SAPGUI")'获取SAP GUI脚本对象
Set SAPApp = SapGuiAuto.GetScriptingEngine'获取当前正在运行的SAP GUI
Set SAPCon = SAPApp.Children(0)'获取 当前连接的第一个系统
Set Session = SAPCon.Children(0)'获取该连接上的第一个会话(窗口)
如果不是IsObject(SAPApp),则
设置SapGuiAuto = GetObject(" SAPGUI")
设置SAPApp = SapGuiAuto.GetScriptingEngine
如果结束
如果不是IsObject(连接),则
设置连接= SAPconnection.Children(0)
如果结束
如果不是IsObject(Session),则
设置会话= connection.Children(0)
如果结束
如果IsObject(WScript)然后
WScript.ConnectObject会话,"开启"
WScript.ConnectObject SAPApp,"打开"
结束If
Session.findById(" wnd [0]")。maximize
Dim objExcel,objWorkbook,objSheet,i
将Dim A作为变体
" Dim B为变体形式
设置objExcel = CreateObject(" Excel.Application")
myfile = application.GetOpenFilename(,,"浏览工作表")
工作簿。打开myfile
设置objSheet = ActiveWorkbook.Sheets(" Sheet1")
'A = Input("输入开始行","")
'B = Input("输入结束行","")
Myvalue = InputBox("给我一些输入")
Myvalue2 = InputBox("给我一些输入")
StopNow = False
'对于i = 2到1000
对于iRow = Myvalue To Myvalue2
'在状态为0的行之间循环并调用ProcessRow函数对其进行处理
'对于iRow =开始行到objSheet.UsedRange.Rows.Count
'如果objSheet.Cells(iRow, 3)=" 0"然后
'调用ProcessRow(iRow)
'itemcount = itemcount + 1
'objSheet.Cells(9,1)= itemcount&"/"&itemmax
'结束 If
'Next
Range(" A1")。Value = i
'DoEvents
'Function ProcessRow(iRow)
'Dim W_BPNumber,W_SearchTerm
'Dim lineitems As Long
'
'将行状态设置为"正在处理..."
'objSheet.Cells(iRow,5)= 1
'BP号
'如果objSheet.Cells(iRow,1)<>""然后
'W_BPNumber = objSheet.Cells(iRow,1)
'Else
'W_BPNumber =" xxxxxx"
'如果结束
'Seartch词
'如果objSheet.Cells(iRow,2)<>""然后
'W_SearchTerm = objSheet.Cells(iRow,2)
'Else
'W_SearchTerm =" "
'如果结束
col1 = Trim(CStr(objSheet.Cells(iRow,1).Value))'Column1
COL2 = Trim(CStr(objSheet.Cells(iRow,2).Value))'Column2 < br> COL3 = Trim(CStr(objSheet.Cells(iRow,3).Value))'Column3
COL4 = Trim(CStr(objSheet.Cells(iRow,4).Value))'Column4
出错时转到Myerr
Session.findById(" wnd [0]/tbar [0]/okcd")。Text ="/img/nzpb2"
Session.findById(" wnd [0]")。sendVKey 0
Session。 findById(" wnd [0]/usr/ctxtRMMG1-MATNR")。Text = col1
Session.findById(" wnd [0]/usr/ctxtRMMG1-MATNR")。caretPosition = 12
Session.findById( " wnd [0]")。sendVKey 0
Session.findById(" wnd [1]/usr/tblSAPLMGMMTC_VIEW")。getAbsoluteRow(5).Selected = True <出现错误时恢复下一个
Session.findById (" wnd [1]/usr/tblSAPLMGMMTC_VIEW/txtMSICHTAUSW-DYTXT [0,5]")。SetFocus
Session.findById(" wnd [1]/usr/tblSAPLMGMMTC_VIEW/txtMSICHTAUSW-DYTXT [0,5]") .caretPosition = 0
Session.findById(" wnd [1]")。sendVKey 0
Session.findById(" wnd [1]/usr/ctxtRMMG1-WERKS")。Text = COL2
Session。 findById(" wnd [1]/usr/ctxtRMMG1-WERKS")。caretPosition = 4
Session.findById(" wnd [1]")。sendVKey 0
Session.findById(" wnd [0]/usr /tabsTABSPR1/tabpSP11/ssubTABFRA1:SAPLMGMM:2000/subSUB2:SAPLMGD1:2301/ctxtMARC-MMSTA").Text = COL3
错误恢复下一个
Session.findById(" wnd [0]/usr/tabsTABSPR1/tabpSP11/ssubTABFRA1:SAP LMGMM:2000/subSUB2:SAPLMGD1:2301/ctxtMARC-MMSTD")。文本= COL4
错误恢复下一个
Session.findById(" wnd [0]/usr/tabsTABSPR1/tabpSP11/ssubTABFRA1:SAPLMGMM:2000 /subSUB2:SAPLMGD1:2301/ctxtMARC-MMSTD").SetFocus
Session.findById(" wnd [0]/usr/tabsTABSPR1/tabpSP11/ssubTABFRA1:SAPLMGMM:2000/subSUB2:SAPLMGD1:2301/ctxtMARC-MMSTD") .caretPosition = 10
Session.findById(" wnd [0]")。sendVKey 0
Session.findById(" wnd [1]/usr/btnSPOP-OPTION1")。按
打开错误继续下一页
如果StopNow,则退出
'Session.findById(" wnd [1]/usr/tblSAPLMGMMTC_VIEW")。getAbsoluteRow(5).Selected = False
'从状态栏获取消息并将其保存在B
objSheet列中。 单元格(iRow,5)= objSBar.Text
'将状态更新为"已完成"并退出
objSheet.Cells(iRow,5)= 2
'退出函数
'myerr:
'将状态更新为" Error" < br> objSheet.Cells(iRow,5)= 3
下一个iRow
'结束函数
结束子
您似乎要问的基本版本是
更完整的列表可能是:
状态栏可能满足您的需求。
objSBar没有设置任何位置,此处提到的现有代码将在B列中写入一个空白值。
我上面提供的代码段可以插入到您从状态栏获取反馈的任何位置,然后可以将该变量并将其写入到您喜欢的任何单元格中的objSheet中。
嗨,先生
感谢您的宝贵答复,让我检查一下是否奏效,谢谢您……
我需要将此代码放在sap编码之后 ......
MsgArea = Trim(session.FindById(" wnd [0]/sbar/")。MessageId)
MsgNumber = session.FindById(" wnd [0]/sbar/")。MessageNumber
MsgType = session.FindById(" wnd [0]/sbar/")。MessageType
MsgText = session.FindById(" wnd [0]/sbar/")。text
嗨,先生
它不起作用
您好,先生,我检查了一下,但是仍然无法正常工作
一周热门 更多>