tkhrsskの日記

技術ネタなど

Excel VBAアドインの作り方 サンプル

ThisWorkBookに、ワークブック読み込み時の処理(Workbook_Open)追加。

Option Explicit

Private Sub Workbook_Open()
    Dim bar As CommandBar
    Dim button As CommandBarButton
    
    DeleteCommandBar
    Set bar = Application.CommandBars.Add(Name:="ツールバー名", Position:=msoBarTop)    
    Set button = bar.Controls.Add(Type:=msoControlButton)
    button.Style = msoButtonIconAndCaption
    button.FaceId = 172
    button.Caption = "キャプション名"
    button.OnAction = "サブルーチン名"
    Set button = Nothing
    
    bar.Visible = True
    Set bar = Nothing
End Sub

Private Sub Workbook_AddinUninstall()
    DeleteCommandBar
End Sub

Private Sub DeleteCommandBar()
    On Error Resume Next
    Application.CommandBars("ツールバー名").Delete
    On Error GoTo 0
End Sub

FaceIdについては、下記を参照

Office TANAKA - Excel VBA Tips[FaceIdの図について]

DeleteCommandBarでは、ツールバーが無いときの削除処理のエラーハンドリングを無効化。

作成したアドインは、xlam形式で、%USERPROFILE%\AppData\Roaming\Microsoft\AddIns に保存。

アドインのタイトルや説明は、エクスプローラー上で、ファイルのプロパティから編集。AddInsフォルダに入ると編集できないようなので別の場所で変更してから格納する。

【追記】 インストールは下記スクリプトを用意しとくと楽。

qiita.com