【问题标题】:Calling a function within ThisDocument in Microsoft Word (VB.Net/VBA)在 Microsoft Word (VB.Net/VBA) 中调用 ThisDocument 中的函数
【发布时间】: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


【解决方案1】:

Application.Run 运行宏。

宏存在于模块中,ThisDocument 是一个类模块。

尝试创建一个新模块或使用现有模块代替ThisDocument

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-10-15
    • 1970-01-01
    • 2010-09-21
    • 1970-01-01
    • 2015-06-27
    • 2019-01-30
    • 2023-03-21
    • 1970-01-01
    相关资源
    最近更新 更多