脚本MB51

2020-08-18 00:38发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


我无法在MB51屏幕上创建脚本,代码看起来像这样:

 Sub gerar_contagem()






 设置会话= GetObject(" SAPGUI")。GetScriptingEngine.Children(0).Children(0)
 session.findById(" wnd [0]")。maximize
 session.findById(" wnd [0]/tbar [0]/okcd")。Text ="/img/NMB51"
 session.findById(" wnd [0]")。sendVKey 0
 session.findById(" wnd [0]/tbar [1]/btn [17]")。按
 session.findById(" wnd [1]/usr/txtENAME-LOW")。Text =" w890230"
 session.findById(" wnd [1]/usr/txtENAME-LOW")。SetFocus
 session.findById(" wnd [1]/usr/txtENAME-LOW")。caretPosition = 7
 session.findById(" wnd [1]/tbar [0]/btn [8]")。按
 session.findById(" wnd [1]/usr/cntlALV_CONTAINER_1/shellcont/shell")。currentCellColumn =" TEXT"
 session.findById(" wnd [1]/usr/cntlALV_CONTAINER_1/shellcont/shell")。selectedRows =" 0"
 session.findById(" wnd [1]/usr/cntlALV_CONTAINER_1/shellcont/shell")。doubleClickCurrentCell
 session.findById(" wnd [0]/usr/ctxtBUDAT-LOW")。SetFocus
 session.findById(" wnd [0]/usr/ctxtBUDAT-LOW")。caretPosition = 0
 session.findById(" wnd [0]")。sendVKey 4


 昏暗的objExcel
 昏暗的objSheet,intRow,我
 设置objExcel = GetObject(," Excel.Application")
 设置objSheet = objExcel.ActiveWorkbook.ActiveSheet(1)


 对于i = 2到objSheet.UsedRange.Rows.Count
 G8 = Trim(CStr(objSheet.Cells(i,7).Value))‘G8
 I8 = Trim(CStr(objSheet.Cells(i,7).Value))‘I8


 session.findById(" wnd [1]/usr/cntlCONTAINER/shellcont/shell")。focusDate = G8
 session.findById(" wnd [1]/tbar [0]/btn [0]")。按
 session.findById(" wnd [0]/usr/ctxtBUDAT-HIGH")。SetFocus
 session.findById(" wnd [0]/usr/ctxtBUDAT-HIGH")。caretPosition = 0
 session.findById(" wnd [0]")。sendVKey 4
 session.findById(" wnd [1]/usr/cntlCONTAINER/shellcont/shell")。focusDate = I8
 session.findById(" wnd [1]/tbar [0]/btn [0]")。按
 session.findById(" wnd [0]/tbar [1]/btn [8]")。按
 session.findById(" wnd [0]/tbar [1]/btn [48]")。按
 session.findById(" wnd [0]/mbar/menu [3]/menu [2]/menu [1]")。选择
 session.findById(" wnd [1]/usr/ssubD0500_SUBSCREEN:SAPLSLVC_DIALOG:0501/cntlG51_CONTAINER/shellcont/shell")。setCurrentCell 27," TEXT"
 session.findById(" wnd [1]/usr/ssubD0500_SUBSCREEN:SAPLSLVC_DIALOG:0501/cntlG51_CONTAINER/shellcont/shell")。firstVisibleRow = 18
 session.findById(" wnd [1]/usr/ssubD0500_SUBSCREEN:SAPLSLVC_DIALOG:0501/cntlG51_CONTAINER/shellcont/shell")。selectedRows =" 27"
 session.findById(" wnd [1]/usr/ssubD0500_SUBSCREEN:SAPLSLVC_DIALOG:0501/cntlG51_CONTAINER/shellcont/shell")。clickCurrentCell
 session.findById(" wnd [0]/mbar/menu [0]/menu [1]/menu [1]")。选择
 session.findById(" wnd [1]/tbar [0]/btn [11]")。按




 结束子
 

问题在于这些行的目的是将电子表格的单元格G8和I8中的信息插入屏幕MB51的日期字段中::

昏暗objExcel
 昏暗的objSheet,intRow,我
 设置objExcel = GetObject(," Excel.Application")
 设置objSheet = objExcel.ActiveWorkbook.ActiveSheet(1)


 对于i = 2到objSheet.UsedRange.Rows.Count
 G8 = Trim(CStr(objSheet.Cells(i,7).Value))‘G8
 I8 = Trim(CStr(objSheet.Cells(i,7).Value))‘I8
 

有人可以帮我解决这个问题吗?

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


我无法在MB51屏幕上创建脚本,代码看起来像这样:

 Sub gerar_contagem()






 设置会话= GetObject(" SAPGUI")。GetScriptingEngine.Children(0).Children(0)
 session.findById(" wnd [0]")。maximize
 session.findById(" wnd [0]/tbar [0]/okcd")。Text ="/img/NMB51"
 session.findById(" wnd [0]")。sendVKey 0
 session.findById(" wnd [0]/tbar [1]/btn [17]")。按
 session.findById(" wnd [1]/usr/txtENAME-LOW")。Text =" w890230"
 session.findById(" wnd [1]/usr/txtENAME-LOW")。SetFocus
 session.findById(" wnd [1]/usr/txtENAME-LOW")。caretPosition = 7
 session.findById(" wnd [1]/tbar [0]/btn [8]")。按
 session.findById(" wnd [1]/usr/cntlALV_CONTAINER_1/shellcont/shell")。currentCellColumn =" TEXT"
 session.findById(" wnd [1]/usr/cntlALV_CONTAINER_1/shellcont/shell")。selectedRows =" 0"
 session.findById(" wnd [1]/usr/cntlALV_CONTAINER_1/shellcont/shell")。doubleClickCurrentCell
 session.findById(" wnd [0]/usr/ctxtBUDAT-LOW")。SetFocus
 session.findById(" wnd [0]/usr/ctxtBUDAT-LOW")。caretPosition = 0
 session.findById(" wnd [0]")。sendVKey 4


 昏暗的objExcel
 昏暗的objSheet,intRow,我
 设置objExcel = GetObject(," Excel.Application")
 设置objSheet = objExcel.ActiveWorkbook.ActiveSheet(1)


 对于i = 2到objSheet.UsedRange.Rows.Count
 G8 = Trim(CStr(objSheet.Cells(i,7).Value))‘G8
 I8 = Trim(CStr(objSheet.Cells(i,7).Value))‘I8


 session.findById(" wnd [1]/usr/cntlCONTAINER/shellcont/shell")。focusDate = G8
 session.findById(" wnd [1]/tbar [0]/btn [0]")。按
 session.findById(" wnd [0]/usr/ctxtBUDAT-HIGH")。SetFocus
 session.findById(" wnd [0]/usr/ctxtBUDAT-HIGH")。caretPosition = 0
 session.findById(" wnd [0]")。sendVKey 4
 session.findById(" wnd [1]/usr/cntlCONTAINER/shellcont/shell")。focusDate = I8
 session.findById(" wnd [1]/tbar [0]/btn [0]")。按
 session.findById(" wnd [0]/tbar [1]/btn [8]")。按
 session.findById(" wnd [0]/tbar [1]/btn [48]")。按
 session.findById(" wnd [0]/mbar/menu [3]/menu [2]/menu [1]")。选择
 session.findById(" wnd [1]/usr/ssubD0500_SUBSCREEN:SAPLSLVC_DIALOG:0501/cntlG51_CONTAINER/shellcont/shell")。setCurrentCell 27," TEXT"
 session.findById(" wnd [1]/usr/ssubD0500_SUBSCREEN:SAPLSLVC_DIALOG:0501/cntlG51_CONTAINER/shellcont/shell")。firstVisibleRow = 18
 session.findById(" wnd [1]/usr/ssubD0500_SUBSCREEN:SAPLSLVC_DIALOG:0501/cntlG51_CONTAINER/shellcont/shell")。selectedRows =" 27"
 session.findById(" wnd [1]/usr/ssubD0500_SUBSCREEN:SAPLSLVC_DIALOG:0501/cntlG51_CONTAINER/shellcont/shell")。clickCurrentCell
 session.findById(" wnd [0]/mbar/menu [0]/menu [1]/menu [1]")。选择
 session.findById(" wnd [1]/tbar [0]/btn [11]")。按




 结束子
 

问题在于这些行的目的是将电子表格的单元格G8和I8中的信息插入屏幕MB51的日期字段中::

昏暗objExcel
 昏暗的objSheet,intRow,我
 设置objExcel = GetObject(," Excel.Application")
 设置objSheet = objExcel.ActiveWorkbook.ActiveSheet(1)


 对于i = 2到objSheet.UsedRange.Rows.Count
 G8 = Trim(CStr(objSheet.Cells(i,7).Value))‘G8
 I8 = Trim(CStr(objSheet.Cells(i,7).Value))‘I8
 

有人可以帮我解决这个问题吗?

付费偷看设置
发送
9条回答
昵称总是被占用
1楼 · 2020-08-18 01:18.采纳回答

您好 Alex Eckert

我的意思是,您在"对于 循环。 是吗?否则,请提交错误消息,没有问题就很难说。

请注意,
Mateusz
当学会了学习
2楼-- · 2020-08-18 01:28

错误消息:

风早神人
3楼-- · 2020-08-18 01:30

再次问好!

我再次编辑了帖子,并且我处于VBA的新阶段。

此时,问题在于在SAP窗口中停止脚本,运行VBA时我可以生成所需的文件,但是执行此任务的SAP窗口将继续无限执行该文件。

有什么材料或技巧可以解决吗?

感谢您的收听!

子Cria_nova_contagem()


 设置会话= GetObject(" SAPGUI")。GetScriptingEngine.Children(0).Children(0)


 Rem B1 INICIO ***************************************************


 昏暗的objExcel
 昏暗的objSheet,intRow,我


 设置objExcel = GetObject(," Excel.Application")
 设置objSheet = objExcel.ActiveWorkbook.ActiveSheet




 对于i = 2到objSheet.UsedRange.Rows.Count
     如果i = 0则
     万一
    
 INICIO =修剪(CStr(objSheet.Cells(7,6).Value))'DATA INICIO
 FIM = Trim(CStr(objSheet.Cells(7,9).Value))'数据FIM


 session.findById(" wnd [0]")。maximize


 雷姆B1 FIM ***************************************************  **


 session.findById(" wnd [0]/tbar [0]/okcd")。Text ="/img/NMB51"
 session.findById(" wnd [0]")。sendVKey 0
 session.findById(" wnd [0]/tbar [1]/btn [17]")。按
 session.findById(" wnd [1]/usr/txtENAME-LOW")。Text =" W890230"
 session.findById(" wnd [1]/usr/txtENAME-LOW")。SetFocus
 session.findById(" wnd [1]/usr/txtENAME-LOW")。caretPosition = 7
 session.findById(" wnd [1]/tbar [0]/btn [8]")。按
 session.findById(" wnd [1]/usr/cntlALV_CONTAINER_1/shellcont/shell")。currentCellColumn =" TEXT"
 session.findById(" wnd [1]/usr/cntlALV_CONTAINER_1/shellcont/shell")。selectedRows =" 0"
 session.findById(" wnd [1]/usr/cntlALV_CONTAINER_1/shellcont/shell")。doubleClickCurrentCell
 session.findById(" wnd [0]/usr/ctxtBUDAT-LOW")。Text = INICIO
 session.findById(" wnd [0]/usr/ctxtBUDAT-HIGH")。Text = FIM
 session.findById(" wnd [0]/usr/ctxtBUDAT-HIGH")。SetFocus
 session.findById(" wnd [0]/usr/ctxtBUDAT-HIGH")。caretPosition = 10
 session.findById(" wnd [0]/tbar [1]/btn [8]")。按
 session.findById(" wnd [0]/tbar [1]/btn [48]")。按
 session.findById(" wnd [0]/mbar/menu [3]/menu [2]/menu [1]")。选择
 session.findById(" wnd [1]/usr/ssubD0500_SUBSCREEN:SAPLSLVC_DIALOG:0501/cntlG51_CONTAINER/shellcont/shell")。setCurrentCell 27," TEXT"
 session.findById(" wnd [1]/usr/ssubD0500_SUBSCREEN:SAPLSLVC_DIALOG:0501/cntlG51_CONTAINER/shellcont/shell")。firstVisibleRow = 18
 session.findById(" wnd [1]/usr/ssubD0500_SUBSCREEN:SAPLSLVC_DIALOG:0501/cntlG51_CONTAINER/shellcont/shell")。selectedRows =" 27"
 session.findById(" wnd [1]/usr/ssubD0500_SUBSCREEN:SAPLSLVC_DIALOG:0501/cntlG51_CONTAINER/shellcont/shell")。clickCurrentCell
 session.findById(" wnd [0]/mbar/menu [0]/menu [1]/menu [1]")。选择
 session.findById(" wnd [1]/usr/ctxtDY_PATH")。Text =" \\ msbrtole004 \ data \ Logistica \ ESTOQUE \ SAP"
 session.findById(" wnd [1]/usr/ctxtDY_PATH")。SetFocus
 session.findById(" wnd [1]/usr/ctxtDY_PATH")。caretPosition = 40
 session.findById(" wnd [1]/tbar [0]/btn [11]")。按




 雷姆B2 ****************************************************


 下一个i(0)


 结束子




 雷姆******************************************************  ***
 
95年老男孩
4楼-- · 2020-08-18 01:31

你好亚历克斯,

我建议放置一个断点并逐步执行代码以查找错误源。 此时,错误消息太笼统了。

请问候,
Mateusz
闻人可可
5楼-- · 2020-08-18 01:11

非常感谢Mateusz!

您的评论很有启发性,我理解导致我复杂化的原因,并且设法达到了目标,最终代码如下:

子Cria_nova_contagem()


 设置会话= GetObject(" SAPGUI")。GetScriptingEngine.Children(0).Children(0)
 session.findById(" wnd [0]/tbar [0]/okcd")。Text ="/img/NMB51"
 session.findById(" wnd [0]")。sendVKey 0
 session.findById(" wnd [0]/tbar [1]/btn [17]")。按
 session.findById(" wnd [1]/usr/txtENAME-LOW")。Text =" W890230"
 session.findById(" wnd [1]/usr/txtENAME-LOW")。SetFocus
 session.findById(" wnd [1]/usr/txtENAME-LOW")。caretPosition = 7
 session.findById(" wnd [1]/tbar [0]/btn [8]")。按
 session.findById(" wnd [1]/usr/cntlALV_CONTAINER_1/shellcont/shell")。currentCellColumn =" TEXT"
 session.findById(" wnd [1]/usr/cntlALV_CONTAINER_1/shellcont/shell")。selectedRows =" 0"
 session.findById(" wnd [1]/usr/cntlALV_CONTAINER_1/shellcont/shell")。doubleClickCurrentCell




 Rem B1 INICIO ***************************************************


 昏暗的objExcel
 昏暗的objSheet,intRow,我


 设置objExcel = GetObject(," Excel.Application")
 设置objSheet = objExcel.ActiveWorkbook.ActiveSheet




 对于i = 2到objSheet.UsedRange.Rows.Count
     如果我<> 2则
     万一
    
 INICIO =修剪(CStr(objSheet.Cells(7,6).Value))'DATA INICIO
 FIM = Trim(CStr(objSheet.Cells(7,9).Value))'数据FIM


 session.findById(" wnd [0]")。maximize


 雷姆B1 FIM ***************************************************  **






 session.findById(" wnd [0]/usr/ctxtBUDAT-LOW")。Text = INICIO
 session.findById(" wnd [0]/usr/ctxtBUDAT-HIGH")。Text = FIM


 雷姆B2 ****************************************************


 接下来我


 雷姆******************************************************  ***


 session.findById(" wnd [0]/usr/ctxtBUDAT-HIGH")。SetFocus
 session.findById(" wnd [0]/usr/ctxtBUDAT-HIGH")。caretPosition = 10
 session.findById(" wnd [0]/tbar [1]/btn [8]")。按
 session.findById(" wnd [0]/tbar [1]/btn [48]")。按
 session.findById(" wnd [0]/mbar/menu [3]/menu [2]/menu [1]")。选择
 session.findById(" wnd [1]/usr/ssubD0500_SUBSCREEN:SAPLSLVC_DIALOG:0501/cntlG51_CONTAINER/shellcont/shell")。setCurrentCell 27," TEXT"
 session.findById(" wnd [1]/usr/ssubD0500_SUBSCREEN:SAPLSLVC_DIALOG:0501/cntlG51_CONTAINER/shellcont/shell")。firstVisibleRow = 18
 session.findById(" wnd [1]/usr/ssubD0500_SUBSCREEN:SAPLSLVC_DIALOG:0501/cntlG51_CONTAINER/shellcont/shell")。selectedRows =" 27"
 session.findById(" wnd [1]/usr/ssubD0500_SUBSCREEN:SAPLSLVC_DIALOG:0501/cntlG51_CONTAINER/shellcont/shell")。clickCurrentCell
 session.findById(" wnd [0]/mbar/menu [0]/menu [1]/menu [1]")。选择
 session.findById(" wnd [1]/usr/ctxtDY_PATH")。Text =" \\ msbrtole004 \ data \ Logistica \ ESTOQUE \ SAP"
 session.findById(" wnd [1]/usr/ctxtDY_PATH")。SetFocus
 session.findById(" wnd [1]/usr/ctxtDY_PATH")。caretPosition = 40
 session.findById(" wnd [1]/tbar [0]/btn [11]")。按










 结束子


 

Obrigado !!

半个程序猿
6楼-- · 2020-08-18 01:18

请用英语指出错误文本。 这是一个英语论坛。 它对应于:

所需的对象424 
Tong__Ming
7楼-- · 2020-08-18 01:24

你好Alex,

尝试搜索互联网。 VBA已经存在了一段时间,并且在不同的论坛上都有大量的信息。 在这种情况下,您最喜欢的搜索引擎是您最好的朋友。

此外,请查看有关VBA的Microsoft页面:https://docs.microsoft.com/zh-cn/office/vba/api/overview/

亲切的问候,
Mateusz

一周热门 更多>