2011-03-01 106 views
0

我通过C#在Word文档中运行宏,宏基本上创建了文档的副本并添加了多个属性。用msgbox通过C#运行Word VBA,无需用户交互

但问题是,我的宏有一个确认msgbox在需要用户交互的代码的某个点。

我正在使用下面的代码从MS的网站抓取。所以问题是,

是否有任何方法来抑制或自动确认宏运行中显示的消息框?

private void RunMacro(object oApp, object[] oRunArgs) 
{ 
    oApp.GetType().InvokeMember("Run", 
     System.Reflection.BindingFlags.Default | 
     System.Reflection.BindingFlags.InvokeMethod, 
     null, oApp, oRunArgs); 
} 

回答

1

既然是宏,只是改变它,所以它不显示确认MSGBOX。

当您需要宏在另一个确认msgbox应出现的上下文中时,向您的宏代码添加一个布尔标志useConfirmationMsgBox as Boolean,并且只有当此标志为真时才显示MsgBox。然后,提供两个不同的入口点,其中一个将useConfirmationMsgBox设置为true,另一个入口点设置为false。

+0

感谢Doc Brown的回复。我想在不编辑宏代码的情况下执行此操作,因为它会影响我们公司的大量文档...如果我更新了模板,它将确实是开销:(... – AnarchistGeek 2011-03-01 14:36:15

+0

如果我找到了你,你没有运行一个宏,而是同一个宏的几十个(或更多)副本?你的宏不是可以在一个地方改变的文档模板的一部分吗?那么这会给你一个维护噩梦的时间会少一些或者更晚。 ,可以使用Windows消息传递系统将模拟的“Enter”键笔划发送到确认MsgBox,但这些类型的解决方案往往非常不稳定,我不会认真推荐。你的文件。 – 2011-03-01 15:22:31

相关问题