現在、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つ目以降のドキュメントではドロップダウンリストでアイテムを選択してもイベントが発生しません。
どのようにすればよいのかご存じの方がいらっしゃいましたらお知恵を貸してください。
ヒントでも結構です。どうぞよろしくお願いいたします。