Excel VBAでやりたいことがあるので、暇を見て色々調べものをする予定。
それで、①アドインの作成方法と②メニューの作成方法を調べてみたので、
書いておきます。
環境はExcel 2010です。
①アドインの作成方法
拡張子を.xlamにして保存します。
これで[ファイル]-[オプション]-[アドイン]-[管理:Excelアドイン]-[設定]を押して、
アドインダイアログを開いてから、[参照]ボタンを押して保存したファイルを
指定するとアドインのリストに登録されます。
この時点では登録しても何もしないので、
これから先ほど保存したファイルに色々機能を追加します。
②メニューの作成方法
アドインとしてインストールしている場合、
[開発]-[VisualBasic]で[Microsoft Visual Basic for Applications]を開くと、
アドインファイルを編集することができます。
該当のアドインファイルの構成として、
[Microsoft Excel Object]と[標準モジュール]があり、
今回は[Microsoft Excel Object]内の[ThisWookbook]を編集します。
a.アドインインストール時に実行する処理の登録方法
参考:http://www.happy2-island.com/excelsmile/smile03/capter01002.shtml
[ThisWookbook]内に以下のコードを追加
Private Sub Workbook_AddinInstall() 'ここに処理を記載 Sub End
Workbook_AddinInstall関数の中に書かれた処理がアドインのインストール時に実行されます。同様にWorkbook_AddinUninstall関数はアドインのアンインストール時に実行されます。
b.メニューの追加方法
参考:http://www.happy2-island.com/excelsmile/smile03/capter00709.shtml
Private Sub Workbook_AddinInstall() Dim cbrCmd As CommandBar Dim cbcMenu As CommandBarControl Set cbrCmd = Application.CommandBars("Worksheet Menu Bar") Set cbcMenu = cbrCmd.Controls.Add(Type:=msoControlPopup) cbcMenu.Caption = "メニュー1" With cbcMenu.Controls.Add(Type:=msoControlButton) .Caption = "ボタン1" .OnAction = "prcButton1" End With Exit Sub
上記のコードで独自メニューとボタンを1つ作成することができます。
Application.CommandBars("Worksheet Menu Bar")
コマンドバ―オブジェクトを作成。
Set cbcMenu = cbrCmd.Controls.Add(Type:=msoControlPopup)
メニューを追加して、そのオブジェクトを取得。
cbcMenu.Caption = "メニュー1"
メニュー名を設定。
って感じです。
c.メニューの削除方法
参考:http://www.happy2-island.com/excelsmile/smile03/capter00711.shtml
アドインでメニューを追加した場合、アンインストール時に
メニューの削除処理をしないと、そのまま残り続けてしまいます。
なので、削除処理も追加。
Private Sub Workbook_AddinUninstall() On Error GoTo ErrHand With Application.CommandBars("Worksheet Menu Bar") .Controls("メニュー1").Delete End With Exit Sub ErrHand: If Err.Number = 5 Then Resume Next Else MsgBox Err.Description End If End Sub
エラー処理がありますが、メニューバーに指定したメニューの名前が
入っていないとエラーになるとか。
エラー処理はほぼコピペなので、内容はまだ把握していません。