1

我一直在尝试构建位于此处的示例: http ://www.mztools.com/articles/2012/MZ2012013.aspx

与发布的唯一区别是我尝试使用 NetOffice COM 互操作库而不是推荐的私有互操作库。我可以在上面的链接上构建基本插件并将其加载为 VBE 插件(在注册它并根据链接添加 reg 键之后)。

我无法根据此链接扩展它以创建工具窗口: http ://www.mztools.com/articles/2012/MZ2012017.aspx

我收到一个我无法弄清楚的 COM 类型不匹配错误。但是,我可以在加载插件时从 VBA 创建工具窗口,这让我认为工具窗口类的实现很好。我可以创建工具窗口实例的示例 VBA 代码是:

Public Sub example()

    Dim doc As Object
    Dim wnd As Object
    Dim wndGuid As String
    Dim progId As String
    Dim caption As String
    caption = "A Caption"

    wndGuid = "{e80c0630-a44c-44ad-86b5-61d8bf664d42}"
    progId = "MyVbaAddin.UserControlHost"

    With ThisWorkbook.VBProject.VBE

        On Error Resume Next
        Set wnd = .Windows.Item(caption)
        On Error GoTo 0

        If wnd Is Nothing Then

            Set wnd = .Windows.CreateToolWindow(.AddIns(1), _
                                                progId, _
                                                caption, _
                                                wndGuid, _
                                                doc)

        End If

        wnd.Visible = True

    End With

End Sub

在这个问题中发布我的整个解决方案是不合理的,但我已将其上传到 GitHub: https ://github.com/rossknudsen/VbaAddin

NetOffice 开发人员认为他的代码可能有问题,但我不相信。我已经导入了 NetOffice 源代码来帮助调试。

4

0 回答 0