我一直在尝试构建位于此处的示例: 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 源代码来帮助调试。