ここにある例をビルドしようとしています: 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 ソースをインポートしました。