我从另一个宏调用一个宏,它使用
运行良好Application.Run("'name of the file'!function to call")
但问题是我需要调用的函数有一个MsgBox,它希望用户给出OK。
我如何默认发送OK?我无法更改原始代码。
感谢您的帮助
答案 0 :(得分:1)
一切皆有可能......但你可能不想去那里。
Rubberduck(我管理的VBE加载项OSS项目)使用EasyHook挂钩vbe7.dll
并拦截对rtcMsgBox
的调用,这是在调用时调用的内部函数VBA代码调用MsgBox
函数。
这允许Rubberduck单元测试为MsgBox
函数设置返回值,而不显示实际的消息框:
Fakes.MsgBox.Returns vbOk
DoSomething ' procedure under test, invokes a MsgBox that needs to say "Ok"
挂钩仅在Rubberduck单元测试运行时启用,因此您无法使用此API来满足您的需求 - 但是Rubberduck是开源的,您可以将其分叉并进行调整(它&# 39;用C#编写),以便通过修改后的API在生产代码中使用其Fakes
API,使客户端VBA代码可以打开和关闭钩子。
或者你可以编写一些恶魔的Win32 API代码并实现类似的东西。
祝你好运!