このアーカイブは同期化されません。 mixi の日記が更新されても、このアーカイブには反映されません。
アドインの場合、メニューへの追加だけでなく、
メニューからの削除まできっちり行わなければならない。
Workbook (ThisWorkbook) にはアドイン用のイベントがある。AddinInstall と AddinUninstall だ。
アドインが Excel で使用可能になった時点で、
AddinInstall イベントが発生し、アドインを削除した際に、
AddinUninstall イベントが発生する。
Install/Uninstall という名前が示すとおり、
アドインの導入時と導入解除時しか発生しない。
一度チェックされたアドインは、Excel 起動時に、
Excel がそのアドインをロードするため、
Install イベントは発生しない。
以上を考えると、各イベントの処理は以下のとおりとなる。
・AddinInstall
アドイン用メニューの追加
・AddinUninstall
アドイン用メニューの削除
・Open
メニューのイベントハンドラの接続
Open イベントは、普通にブックとして開く場合でも、
アドインとして開く場合でも発生するので厄介だが、
AddinInstall と Open で行う処理は、
同じ処理としてまとめてしまえばいいのだ。
' アドイン/ワークブックが開かれた
Private Sub Workbook_Open()
On Error Resume Next
Call RegisterMenuItem
End Sub
' アドインの導入(直後に Open が発生)
Private Sub Workbook_AddinInstall()
On Error Resume Next
Call RegisterMenuItem
End Sub
' アドインの除去
Private Sub Workbook_AddinUninstall()
On Error Resume Next
Call m_oSolveButton.Delete
End Sub
アドインとしてのテストをするために、
メニュー「ツール」⇒「ユーザ設定」を選び、
「ツール」メニュー自体を右クリックしてリセットを選ぶ。
これにより、メニューバーを初期化しておく。
次いで、名前をつけて保存からアドイン形式を選び、
「Nonogram.xla」と名前をつけて保存、
ユーザプロファイル(C:\Documents and Settings\~)の
\Application Data\Microsoft\AddIns に保存される。
一度 Excel を終了し、再度起動、
「ツール」→「アドイン」を選択し、
「Nonogram」をロードする。
パズルの入ったブックを開いて実行……動いた。
もう一度 Excel を終了させ、再度起動する。
今度は最初からロードされているので、
パズルの入ったブックを開いて実行……動いた。
今度は、「ツール」→「アドイン」を選択し、
「Nonogram」をアンロードする。
よし、「ツール」メニューから項目が消えている。