ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 265|回复: 6

[求助] VBA与SAP的结合,如何报错循环且返回错误信息

[复制链接]

TA的精华主题

TA的得分主题

发表于 2024-7-6 10:58 | 显示全部楼层 |阅读模式

群里大师:
如图,我用exel模板数据上传至sap系统(附件是申请pr,代码是:ME51N),如图显示第二行物料料号不存在,则录入时sap报错,不能跳过错误执行第三行,现想:返回当行是否成功/失败信息且跳到第三行继续执行,看群里有无接触到sap语言与vba语言的连接用法,谢谢
aaa.png

vba-sap循环.7z

113.72 KB, 下载次数: 3

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-7-8 09:36 | 显示全部楼层
都没人看?什么情况

TA的精华主题

TA的得分主题

发表于 2024-7-9 15:08 | 显示全部楼层
starnew88 发表于 2024-7-8 09:36
都没人看?什么情况

可以用这个模板

SAP GUI Scripting V03模板.zip

422.44 KB, 下载次数: 7

TA的精华主题

TA的得分主题

发表于 2024-7-9 15:36 | 显示全部楼层
可以这样改写一下
  1. Sub 建立钢料pr()

  2. '忽略错误
  3. On Error Resume Next

  4. '从excel模板数量建立到sap pr数量,下面为sap录屏脚本,使用excel中的变量且循环

  5. If Not IsObject(Applicationa) Then
  6.    Set SapGuiAuto = GetObject("SAPGUI")
  7.    Set Applicationa = SapGuiAuto.GetScriptingEngine
  8. End If
  9. If Not IsObject(Connection) Then
  10.    Set Connection = Applicationa.Children(0)
  11. End If
  12. If Not IsObject(SessionB) Then
  13.    Set SessionB = Connection.Children(0)
  14. End If
  15. If IsObject(WScript) Then
  16.    WScript.ConnectObject SessionB, "on"
  17.    WScript.ConnectObject Applicationa, "on"
  18. End If

  19. Row = Application.CountA(ActiveSheet.Range("F:F"))
  20. '
  21.   For I = 2 To Row
  22.     If Cells(I, 6) = "" Then
  23.     Exit Sub
  24.   Else
  25.     With SessionB
  26.         .findById("wnd[0]").maximize
  27.         .findById("wnd[0]/tbar[0]/okcd").Text = "/nME51N"
  28.         .findById("wnd[0]").sendVKey 0
  29.         
  30.         .findById("wnd[0]/usr/subSUB0:SAPLMEGUI:0016/subSUB2:SAPLMEVIEWS:1100/subSUB2:SAPLMEVIEWS:1200/subSUB1:SAPLMEGUI:3212/cntlGRIDCONTROL/shellcont/shell").modifyCell 0, "MATNR", Cells(I, 6)
  31.         .findById("wnd[0]/usr/subSUB0:SAPLMEGUI:0016/subSUB2:SAPLMEVIEWS:1100/subSUB2:SAPLMEVIEWS:1200/subSUB1:SAPLMEGUI:3212/cntlGRIDCONTROL/shellcont/shell").modifyCell 0, "MENGE", Cells(I, 8)
  32.         .findById("wnd[0]/usr/subSUB0:SAPLMEGUI:0016/subSUB2:SAPLMEVIEWS:1100/subSUB2:SAPLMEVIEWS:1200/subSUB1:SAPLMEGUI:3212/cntlGRIDCONTROL/shellcont/shell").modifyCell 0, "EEIND", Cells(I, 11)
  33.         .findById("wnd[0]/usr/subSUB0:SAPLMEGUI:0016/subSUB2:SAPLMEVIEWS:1100/subSUB2:SAPLMEVIEWS:1200/subSUB1:SAPLMEGUI:3212/cntlGRIDCONTROL/shellcont/shell").modifyCell 0, "EKGRP", Cells(I, 15)
  34.         .findById("wnd[0]/usr/subSUB0:SAPLMEGUI:0016/subSUB2:SAPLMEVIEWS:1100/subSUB2:SAPLMEVIEWS:1200/subSUB1:SAPLMEGUI:3212/cntlGRIDCONTROL/shellcont/shell").modifyCell 0, "FLIEF", Cells(I, 19)
  35.    
  36.         .findById("wnd[0]").sendVKey 0
  37.         str_text = .findById("wnd[0]/sbar").Text '状态栏消息文本
  38.         
  39.         If str_text Like "" Then '返回是否成功消息
  40.             .findById("wnd[0]/tbar[0]/btn[11]").press
  41.              ActiveSheet.Cells(I, 22).Value = .findById("wnd[0]/sbar").Text
  42.             .findById("wnd[0]/tbar[0]/btn[3]").press
  43.         Else
  44.             ActiveSheet.Cells(I, 22).Value = .findById("wnd[0]/sbar").Text
  45.         End If
  46.     End With
  47.   End If
  48. Next I

  49. On Error GoTo 0

  50. MsgBox "建立完成,请完成后续作业"

  51. End Sub
复制代码




Snipaste_2024-07-09_15-35-35.jpg

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-7-10 15:08 | 显示全部楼层
本帖最后由 starnew88 于 2024-7-10 16:47 编辑

谢谢老师,您的代码还是出错,而且错在哪我都不知道,我看数据都没问题,见图!

我昨天自已琢磨做好了,我的思路很简单,不管是件号报错,还是日期报错,还是其它几个关键字报错,我都在它报错后加一个判断,像这个pr报错会弹出来一个画面,然后我录屏一个关闭错误的动作加入到报错中,关闭然后返回就好了。按同种思路别的报错也搞成功了,只是比较笨的办法,谢谢老师
辛苦了!


aaa.png

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-7-10 15:09 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
jiaxinl 发表于 2024-7-9 15:08
可以用这个模板

这个模板好像帮助不大,对于我来说,可能是我英文不太好的原因吧

TA的精华主题

TA的得分主题

发表于 2024-7-11 16:03 | 显示全部楼层
starnew88 发表于 2024-7-10 15:09
这个模板好像帮助不大,对于我来说,可能是我英文不太好的原因吧

模板其实跟录屏差不多
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-11-18 01:47 , Processed in 0.035076 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表