none
共有アドインにおけるドロップダウンリストの動作について(VS2005 Office共有アドインの場合) RRS feed

  • 質問

  • 現在、VS2005の共有アドインテンプレートでWord用のアドインプログラムを作っています。

     

    当該プログラムでは、Word2003に新規のCommandBar(=ツールバー)を作成し、そのツールバーにドロップダウンリストを作成し、ドロップダウンリストのアイテムを選択した際に、イベントを発生させたいと考えています。

     

    例として説明用に簡略化したソースを以下に示します。

     

    ソース)Connect.vb(一部抜粋)

    ’※参照設定に「Microsoft Word 11.0 Object Library」を追加しています。

    Imports Extensibility
    Imports System.Runtime.InteropServices
    Imports Microsoft.Office.core


     

    ’~中略~

     

    Public Class Connect
        Implements Extensibility.IDTExtensibility2

        Dim applicationObject as Object
        Dim addInInstance as object

     

        ' *** ここからカスタムコード ***
        Dim
    appWord As Microsoft.Office.Interop.Word.Application

        Dim objCommandBars As CommandBars
        Dim objCommandBar As CommandBar
        Dim objDropDownList As CommandBarComboBox

            ' *** ここまでカスタムコード ***
       

        ’~OnConnection以外は省略 ~

     

        Public Sub OnConnection(ByVal application As Object, _

                                           ByVal connectMode As Extensibility.ext_ConnectMode, _

                                           ByVal addInInst As Object, _

                                           ByRef custom As System.Array _

                                          ) Implements Extensibility.IDTExtensibility2.OnConnection
            applicationObject = application
            addInInstance = addInInst

     

            ' *** ここからカスタムコード ***
            appWord = CType(applicationObject, Microsoft.Office.Interop.Word.Application)

     

            '(1)「Sample」という名前のCommandBarを作成
            objCommandBars = appWord.CommandBars
            objCommandBars.Add("Sample", 4, False, True)
            objCommandBar = objCommandBars.Item("Sample")

     

            '(2)DropDownListをobjCommandBarに作成
            objDropDownList = CType(objCommandBar.Controls.Add(MsoControlType.msoControlDropdown),
    CommandBarComboBox)
            objDropDownList.AddItem("a", 1)
            objDropDownList.AddItem("b", 2)
            objDropDownList.AddItem("c", 3)

            AddHandler objDropDownList.Change, AddressOf objDropDownListChanged

     

            '(3)objCommandBarを表示
            objCommandBar.Visible = True
            ' *** ここまでカスタムコード ***
        End Sub

     

        ' *** ここからカスタムコード ***
        Private Sub objDropDownListChanged(ByVal ctrl As CommandBarComboBox)
            MsgBox(ctrl.Text & " が選択されました")
       
    End Sub
       
    ' *** ここまでカスタムコード ***

    End Class

     

    このプログラムでは、アドイン起動時に、ツールバー「Sample」が作成され、ツールバー「Sample」には、ドロップダウンリストが作成されます。

    Wordのドキュメントファイル(*.doc)を1つだけ開いているときは、ドロップダウンリストでアイテムを選択すると、選択したアイテム名がメッセージボックスで表示され、問題なく動作します。

     

    しかしながら、2つ以上のWordのドキュメントファイルを開くと、2つ目以降のドキュメントではドロップダウンリストでアイテムを選択してもイベントが発生しません。

     

    どのようにすればよいのかご存じの方がいらっしゃいましたらお知恵を貸してください。

    ヒントでも結構です。どうぞよろしくお願いいたします。

    2007年11月12日 10:40