将sap注释复制到excel的脚本

2020-09-06 04:09发布

         点击此处--->   EasySAP.com群内免费提供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


'结束函数
结束子

         点击此处--->   EasySAP.com群内免费提供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


'结束函数
结束子

付费偷看设置
发送
6条回答
愤怒的猪头君
1楼-- · 2020-09-06 04:42

您似乎要问的基本版本是

 session.FindById(" wnd [0]/sbar")。text 

更完整的列表可能是:

 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
 

状态栏可能满足您的需求。

hengyuye
2楼-- · 2020-09-06 04:50
'从状态栏获取消息并将其保存在B列中
 objSheet.Cells(iRow,5)= objSBar.Text
 

objSBar没有设置任何位置,此处提到的现有代码将在B列中写入一个空白值。

我上面提供的代码段可以插入到您从状态栏获取反馈的任何位置,然后可以将该变量并将其写入到您喜欢的任何单元格中的objSheet中。

SAP砖家
3楼-- · 2020-09-06 04:42

嗨,先生

感谢您的宝贵答复,让我检查一下是否奏效,谢谢您……

Bunny_CDM
4楼-- · 2020-09-06 04:44

我需要将此代码放在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

何必丶何苦呢
5楼-- · 2020-09-06 04:44

嗨,先生

它不起作用

歪着头看世界
6楼-- · 2020-09-06 04:30

您好,先生,我检查了一下,但是仍然无法正常工作

一周热门 更多>