Excelアドインの作り方
この記事でやること
VBAで作成したプログラムをアドインとして登録します。
作成例として、当記事ではメッセージボックスを表示するためのアドインボタンを作成します。
ボタン化することで直感的に機能を呼び出すことが出来ます。
作成手順
①Excelを起動し、任意の名前で「.xlsm」ファイルを作成する。
※当記事では「ExcelAddin.xlsm」というファイルを作成します。
②以下の通りシートを入力する。
セルB2:ツールバーの名前
セルC2:addin
セルC2の名前の定義:ツールバーの名前
※セルC2を選択して下図の赤枠に入力し、Enterで確定する。
③開発タブより、ActiveXコントロールのコマンドボタンを2つ追加する
※開発タブの表示方法はこちら
④ボタンの文言を編集する
右クリック → [コマンド ボタン オブジェクト] → [編集]
※開発タブのデザインモードが有効になっていること
以下のように定義してください
・ツールバー追加
・ツールバー削除
⑤ボタンの名前をそれぞれ定義する
ツールバーの追加:btnAddToolbar
ツールバーの削除:btnDelToolbar
※ボタンを選択して下図の赤枠に入力し、Enterで確定する。
⑥挿入タブよりワードアートを追加する(アドインのアイコン用)
「メ」という文字のワードアートにします
⑦挿入したワードアートの名前を定義する
名前の定義:CommandIcon001
※ワードアートを選択して下図の赤枠に入力し、Enterで確定する。
⑧開発タブより「Visual Basic」を押下する
⑨「ExcelAddin.xlsm」を右クリックし、[挿入] → [標準モジュール]を選択
以下のような構成になっていると思います
⑩3か所それぞれプログラムを定義する
・Sheet1 (Sheet1)
※17~21行目:アドイン化する機能やアイコンを定義しています。
※18行目:起動する機能(Module1のメソッド名)を定義
※19行目:アイコンホバー時のキャプション
※20行目:アイコンの名前を定義
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 |
Private Sub btnAddToolbar_Click() Dim sht As Worksheet Set sht = ActiveSheet Dim toolName As String toolName = sht.Range("ツールバーの名前") Call DeleteToolBar(toolName) Dim bar As CommandBar Set bar = CommandBars.Add(toolName) Dim barBtn As CommandBarButton '---------------------------------------------------- Set barBtn = bar.Controls.Add barBtn.OnAction = "ShowMessage" barBtn.Caption = "メッセージ" sht.Shapes("CommandIcon001").CopyPicture barBtn.PasteFace '---------------------------------------------------- bar.Visible = True End Sub Private Sub btnDelToolbar_Click() Dim sht As Worksheet Set sht = ActiveSheet Dim toolName As String toolName = sht.Range("ツールバーの名前") Call DeleteToolBar(toolName) End Sub Public Sub DeleteToolBar(sBarName As String) Dim delBar As CommandBar If IsToolBar(sBarName) Then Set delBar = CommandBars(sBarName) delBar.Delete End If End Sub Public Function IsToolBar(sBarName As String) As Boolean Dim bar As CommandBar For Each bar In CommandBars If bar.Name = sBarName Then IsToolBar = True Exit Function End If Next IsToolBar = False End Function |
・ThisWorkbook
※他のExcelを起動している際は、非表示・読み取り専用にするための制御用プログラムです。
自身のファイル(ExcelAddin.xlsm)だけExcel起動した際にブックを表示できるようにしています。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
Private Sub Workbook_Open() On Error GoTo ErrWorkbook_Open If Workbooks.Count = 1 Then Windows(ThisWorkbook.Name).Visible = True Else Application.DisplayAlerts = False ThisWorkbook.ChangeFileAccess Mode:=xlReadOnly Windows(ThisWorkbook.Name).Visible = False ThisWorkbook.Saved = True Application.DisplayAlerts = True End If Exit Sub ErrWorkbook_Open: Application.DisplayAlerts = True End Sub |
・Module1
アドインのアイコンを押下した際に実行するプログラムです。
1 2 3 4 5 |
Sub ShowMessage() MsgBox "メッセージの表示" End Sub |
⑪「ツールバー追加」ボタンを押下
※開発タブのデザインモードが無効になっていること
⑫アドインタブが表示され「メ」というアイコンが表示されていると思います
押下するとメッセージボックスが表示されます
アドインの作成方法は以上です。
必要に応じて、色々なアイコンや呼び出す機能を追加してください。
※以下のような感じで
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
'---------------------------------------------------- Set barBtn = bar.Controls.Add barBtn.OnAction = "ShowMessage1" barBtn.Caption = "メッセージ1" sht.Shapes("CommandIcon001").CopyPicture barBtn.PasteFace '---------------------------------------------------- '---------------------------------------------------- Set barBtn = bar.Controls.Add barBtn.OnAction = "ShowMessage2" barBtn.Caption = "メッセージ2" sht.Shapes("CommandIcon002").CopyPicture barBtn.PasteFace '---------------------------------------------------- |
1 2 3 4 5 6 7 8 9 10 11 12 |
Sub ShowMessage1() MsgBox "メッセージの表示1" End Sub Sub ShowMessage2() MsgBox "メッセージの表示2" End Sub |
作成したExcelファイルは、移動や削除すると機能を呼び出せなくなるので、特定の場所に保存しておいてください。
移動や削除してしまった場合は、「ツールバー削除」→「ツールバー追加」を行ってください。
最後まで呼んで頂きありがとうございました^^
この投稿へのトラックバック
トラックバックはありません。
- トラックバック URL
この投稿へのコメント