如何在VBE编辑器中以编程方式强制中断

时间:2013-06-26 01:30:19

标签: c# vba vbe

我正在编写一个c#应用程序,它打开了许多PI ProcessBook显示文件。 PI Processbook是一个嵌入了Visual Basic for Applications支持的程序,包括VBE环境。

我遇到的问题是我要打开的许多显示器中都有宏,这些宏在打开显示器时会自动运行。我已经将宏保护设置为最大值(这应该完全禁用宏!),但遗憾的是,我正在使用的TypeLibrary中有一些东西,这意味着当以编程方式打开文件时,它会绕过宏安全性并且无论如何都会运行宏。去图......

因此,我试图找到一种以编程方式杀死这些宏的方法,即使它们已经开始。我尝试使用SendKeys.Wait(“^ {BREAK}”)强制进入中断模式。这“工作”,但有点突然出现:我发现如果宏在某些时候没有暂停,SetForegroundWindow不能强制VB编辑器到前台接受sendkeys输入。因此我尝试使用sendmessage。我使用SPY ++看到CTRL + BREAK似乎向窗口发送WM_CANCELMODE消息。显然,这在某种程度上与字面上的ALT + Tabbing不同,或者用鼠标点击窗口并按下CTRL + Break键,因为消息排队,但在宏完成执行之前似乎没有处理。

有没有人有任何其他建议要尝试?

1 个答案:

答案 0 :(得分:-1)

  因此,我试图找到一种以编程方式杀死这些的方法   宏,即使它们已经开始。

在打开电子表格时按住Shift键,宏不会运行。

否则,您可以尝试在代码运行时暂停代码:Ctrl + Alt + PauseBreak

修改

  

我已将宏保护设置为最大值(应禁用此功能)   宏完全!)

尝试禁用它们:

enter image description here