今天给大家介绍点“高大上”的东西。所谓“高大上”的东西嘛,有点标题党的嫌疑,但是在实际应用中还是属于偏小众的知识。
今天要介绍的知识就是用VBA控制SAP。玩儿Excel的公众号有很多,但是涉及到这个知识的Excel公众号,大概还没有,因为会VBA的人不一定会SAP,会SAP的人不一定会VBA,既会VBA又会SAP的人不一定开了公众号。如果有这方面的专业人士,请留言告诉我,我们也好交流一下。
SAP又是个什么东西?不知道的小伙伴请看以下百度出来的信息。
简单点概括一下,SAP就是最大的业务软件公司,大部分世界500强公司都在用,总之很NB~
用VBA控制SAP,这要得益于SAP支持VB Script。SAP可以将屏幕操作记录下来,转换成VB Script代码。如果重新执行一遍录制的脚本,就会将刚才录制的操作再重复操作一遍,就跟放电影似的。对于固定的、复杂的操作,我们可以录下来,下次只要双击脚本就可以自动执行了,不需要再一步一步地操作了。但是这也只能算是低阶玩儿法,因为大部分情况下,在往SAP录入内容时,具体内容都不一样。所以我们的目标是 -- 批量操作。
下面介绍的也算是入门知识,算是抛砖引玉吧!但是了解了这些之后,就可以开始尝试制作批量录入的程序了。
1录制脚本
点击以下菜单中的“Script Recording and Playback”。
弹出一个像录音机一样的对话框,点击红色按钮就开始录制,点击方块按钮就结束录制,点击绿色三角按钮则运行录制的脚本,点击“More”按钮,则显示脚本保存的选项,比如保存路径等。
2将代码移植到Excel
使用记事本打开录制好的一个脚本文件,脚本开头通常显示如下。
把这段代码直接复制到Excel还不能使用,因为里面的application对象跟Excel对象名称Application重复了,我们需要稍加修改,将application替换成一个自定义的名称,比如applications、objSAP等等,自己定义一个就可以了。
下面这一句是在命令框中输入transaction code,比如下面输入/nmb51命令。
session.findById("wnd[0]/tbar[0]/okcd").text = "/nmb51"
下面是一个更改后的代码示例。
注意以上代码可以放到模块中。关于这方面的基础知识,请戳以下链接。
不懂这些基础知识,再厉害的代码你也不会用!
3按回车键
录制代码中常见的这句sendVkey 0就表示按回车键。
session.findById("wnd[0]").sendVKey 0
4获取状态栏消息
下面这句可以获取状态栏的消息文本
session.ActiveWindow.findByName("sbar", "GuiStatusbar").Text
下面这句可以获取状态栏的消息类型
session.ActiveWindow.findByName("sbar", "GuiStatusbar").MessageType
MessageType的值如下。
Value | Description |
S | Success |
W | Warning |
E | Error |
A | Abort |
I | Information |
以上语句都可以赋值给一个变量。在循环处理过程中,可能会遇到意料之外的情况,这时我们就可以通过系统消息来做一个判断。
5在输入框中填入内容
录制代码中类似如下文本表示在文本框中填入内容。
session.findById("wnd[0]/usr/ctxtMSEG-MATNR").Text = "具体内容"
session.findById("wnd[0]/usr/txtMSEG-ERFMG").Text="具体内容"
6通过循环实现批量录入
了解了以上代码的含义,我们可以在VBA中通过For... Next循环等获取Excel表格的内容并操作SAP。我相信能看到这里的人大概也懂一些VBA,并且也是SAP用户,所以具体实现方法我就不再举例赘述。
感兴趣的小伙伴就快试一试吧!SAP用户进来留个言吧!
End.
运行人员:中国统计网小编(微信号:itongjilove)
微博ID:中国统计网
中国统计网,是国内最早的大数据学习网站,公众号:中国统计网
http://www.itongji.cn
声明:我要去上班所有作品(图文、音视频)均由用户自行上传分享,仅供网友学习交流,版权归原作者爱数据社区所有,原文出处。若您的权利被侵害,请联系删除。
本文标题:(会vba的人很厉害吗)(一般哪些人会vba)
本文链接:https://www.51qsb.cn/article/m9ij2.html