使用MsgBox从不同文档上的宏调用函数

时间:2018-01-10 15:05:04

标签: excel vba excel-vba

我从另一个宏调用一个宏,它使用

运行良好
Application.Run("'name of the file'!function to call")

但问题是我需要调用的函数有一个MsgBox,它希望用户给出OK。

我如何默认发送OK?我无法更改原始代码。

感谢您的帮助

1 个答案:

答案 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代码并实现类似的东西。

祝你好运!

相关问题