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