我是SAP脚本的新手,但已经有了一些VBA经验。 我有以下问题试图在SAP中为我当前的位置自动化一个过程。 所以我正在录制一系列程序,将代码粘贴在宏表中,并使Excell使用以下命令读取VBS代码:
Dim SapGuiAuto As Object
Dim Application As Object
Dim Connection As Object
Dim Session As Object
Set SapGuiAuto = GetObject("SAPGUI")
Set Application = SapGuiAuto.GetScriptingEngine
Set Connection = Application.Children(0)
Set Session = Connection.Children(0)
所以一切都很好,但对于其中一个部分,SAP进行了大量的计算,需要花费几分钟时间,并且在其中间,Excel生成消息:
所以我必须单击OK才能继续,这很烦人,因为它会不停地弹出,我必须像10-15次一样才能达到目标,这就消除了自动化点。如果没有宏,SAP不会给我任何错误。 我尝试用
关闭它Application.DisplayAlerts = False,但它不起作用,而是给了我:
我搜索了网络和网站,但几乎没有任何有用的信息,因为我的问题是具体的。 一些额外的信息: 1.我的笔记本电脑不能正常工作,我无法在未经许可的情况下安装任何其他软件或更新,如果您考虑到这一点,请给我替代解决方案。
答案 0 :(得分:0)
上面的Storax实际上通过问题的解决方案给出了另一个主题的链接。
代码在这里:
私人声明功能_ CoRegisterMessageFilter Lib" OLE32.DLL" _ (ByVal lFilterIn As Long,_ ByRef lPreviousFilter)As Long
Sub KillMessageFilter()
'''原始剧本Rob Bovey
'''https://groups.google.com/forum/?hl=en#!msg/microsoft.public.excel.programming/ct8NRT-o7rs/jawi42S8Ci0J
'''http://www.appspro.com/
Dim lMsgFilter As Long
''' Remove the message filter before calling Reflections.
CoRegisterMessageFilter 0&, lMsgFilter
''' Call your code here....
''' Restore the message filter after calling Reflections.
CoRegisterMessageFilter lMsgFilter, lMsgFilter
End Sub
答案 1 :(得分:0)
如果使用64位Microsoft Office,则应根据Declare Statement略微更改M_Delineshev提供的代码。尝试使用此版本:
Private Declare PtrSafe Function _
CoRegisterMessageFilter Lib "OLE32.DLL" _
(ByVal lFilterIn As Long, _
ByRef lPreviousFilter) As LongPtr
Sub KillMessageFilter() '''Original script Rob Bovey
'''https://groups.google.com/forum/?hl=en#!msg/microsoft.public.excel.programming/ct8NRT-o7rs/jawi42S8Ci0J '''http://www.appspro.com/
Dim lMsgFilter As Long
''' Remove the message filter before calling Reflections. CoRegisterMessageFilter 0&, lMsgFilter
''' Call your code here....
''' Restore the message filter after calling Reflections. CoRegisterMessageFilter lMsgFilter, lMsgFilter
End Sub
答案 2 :(得分:0)
以下代码对我有用...
Private Declare PtrSafe Function CoRegisterMessageFilter Lib "OLE32.DLL" (ByVal lFilterIn As Long, ByRef lPreviousFilter) As Long
Sub IgnoreMessages()
Dim lMsgFilter As Long
CoRegisterMessageFilter 0&, lMsgFilter
'Write your code here
CoRegisterMessageFilter lMsgFilter, lMsgFilter
End Sub