小攀写了一系列关于驱动SAP GUI实现办公自动化的文章。其实如果我们的实际业务不是太复杂,熟悉VBA语法的话,可以用Excel VBA驱动SAP GUI做很多事情。它是自动化的。无论是VBA驱动SAP,本质都是使用SAP对外开放的SAP GUI API。今天小攀带你揭开VBA驱动SAP的奥秘。
我们首先需要确保对应的SAP连接开启了【脚本录制和回放】功能,如下图:
如果此项为灰色,说明该功能已被SAP管理员出于各种原因禁用。我们需要联系公司的 SAP 后台支持团队,想办法启用这个功能。之后,我们就可以大方地录制脚本了。脚本(VBS文件)的具体存储路径可以从下图中清楚地看出:
因为生成的脚本默认是.vbs,而且VBS语法和VBA几乎一样,所以我们可以很方便的把这段代码复制到一个VBA模块中。小攀这里记录了一个SAP登录界面的操作。具体VBS代码如下:
If Not IsObject(application) Then Set SapGuiAuto = GetObject("SAPGUI") Set application = SapGuiAuto.GetScriptingEngine End If If Not IsObject(connection) Then Set connection = application.Children(0) End If If Not IsObject(session) Then Set session = connection.Children(0) End If If IsObject(WScript) Then WScript.ConnectObject session, "on" WScript.ConnectObject application, "on" End If session.findById("wnd[0]").maximize session.findById("wnd[0]/usr/txtRSYST-BNAME").text = "user001" session.findById("wnd[0]/usr/pwdRSYST-BCODE").text = "********" session.findById("wnd[0]/usr/pwdRSYST-BCODE").setFocus session.findById("wnd[0]/usr/pwdRSYST-BCODE").caretPosition = 7 session.findById("wnd[0]").sendVKey 0
相信作为新手的你一定已经迫不及待准备把这堆代码复制到VBA中了,如下图:
就在我们以为找到了办法,想大打出手的时候,直接点击【运行子进程】,你会发现这段代码无法编译:
真的很烦!
其实我们完全不用慌,VBE不仅有错误提示,而且在代码中的word上仔细定位错误。如果你已经有一定的VBA基础,不难发现VBA中的保留字是指整个Excel应用实例。
要消除这个编译错误,其实方法超级简单。用另一个对象名来引用它,修改后的VBA代码如下:
Sub sapAutomation() '通过VBA连接SAP GUI实现自动化登录 If Not IsObject(Application) Then Set SapGuiAuto = GetObject("SAPGUI") Set sapApplication = SapGuiAuto.GetScriptingEngine End If If Not IsObject(Connection) Then Set Connection = sapApplication.Children(0) End If If Not IsObject(session) Then Set session = Connection.Children(0) End If If IsObject(WScript) Then WScript.ConnectObject session, "on" WScript.ConnectObject Application, "on" End If session.findById("wnd[0]").maximize session.findById("wnd[0]/usr/txtRSYST-BNAME").Text = "user001" session.findById("wnd[0]/usr/pwdRSYST-BCODE").Text = "********" session.findById("wnd[0]/usr/pwdRSYST-BCODE").SetFocus session.findById("wnd[0]/usr/pwdRSYST-BCODE").caretPosition = 7 session.findById("wnd[0]").sendVKey 0 End Sub
(●’◡’●) 你有没有发现程序员的工作实际上在某种程度上并不难?不如快点好好练习一下代码看看吧?
© 版权声明
本站下载的源码均来自公开网络收集转发二次开发而来,
若侵犯了您的合法权益,请来信通知我们1413333033@qq.com,
我们会及时删除,给您带来的不便,我们深表歉意。
下载用户仅供学习交流,若使用商业用途,请购买正版授权,否则产生的一切后果将由下载用户自行承担,访问及下载者下载默认同意本站声明的免责申明,请合理使用切勿商用。
THE END
暂无评论内容