【发布时间】:2013-10-21 23:50:29
【问题描述】:
我有一个 VB.NET 程序,它通过以下方式将代码添加到 MS Word 中的 ThisDocument 模块:
wrdDoc.VBProject.VBComponents("ThisDocument").CodeModule.AddFromString(sCode)
创建以下子:
Public Sub Example_Click()
Msgbox "Working"
End Sub
我曾经通过命令按钮的单击事件调用它,但是最好从作为 COM 加载项的一部分创建的功能区按钮调用它。
通过将以下代码添加到按钮的单击子,我已经能够在加载项中成功调用全局宏。
Globals.TestWordApp.Application.Run("Macro1")
但是,运行 ThisDocument 中包含的代码的所有尝试都失败了。
任何帮助将不胜感激。
【问题讨论】:
-
ThisDocument 中的 Subs 可以作为 COM 方法访问,但由于它们不在 typelib 中,因此在 COM 环境中,您通常必须通过 IDispatch 获取方法的 dispid 并使用它来调用方法。来自 VB.NET VSTO 插件的 AFAICS 实际上可以使用 Globals.ThisAddIn.Application.ActiveDocument.Macro1() 来调用这样的宏,但它可能不是经过批准的方法。
标签: vb.net visual-studio vba ms-word