【Word VBA】コマンドバーボタンを作成するWordマクロ

2017年8月29日

Wordマクロを実行するための手段として「クイックアクセスツールバー」や「ショートカットキー」をたびたび紹介しています。

先日のWordマクロセミナー(超入門編)の参加者から、[アドイン]タブにボタン作成してここから実行する方法についての質問をいただきました。

Word 2007 以降は、リボンの[アドイン]タブに以下のようなボタンを作成できます。

こうすれば、クイックアクセスツールバーのようなアイコンだけでなく、文字も用いてボタンを作成できるので、マクロをより直感的に実行できるようになります。

また、上記の赤矢印のように、マウスをボタンに重ねたとき(マウスオーバーをしたとき)にマクロの内容をポップアップで表示できます。これ便利ですよね。

このマクロでできること

[アドイン]タブに新たにコマンドバー(ツールバー)を作成し、マクロを実行するボタンを作成できます。

このマクロをNormal.dotm(Normal.dot)の標準モジュールに登録した場合のボタンの情報の保存先は、Normal.dotm(Normal.dot)となります。よって、Wordを開けば常にボタンが表示されるようになります。

以下のようにアイコンとテキストを利用できます。

アイコンを追加した例

テキストを追加した例

アイコンとテキストを追加した例

マクロの解説

14行目で追加するコマンドバーの名称を設定します。サンプルでは、「MWM_Toolbar」としました。

17行目~18行目で登録するマクロと表示を設定します。ここで、ボタンに表示するテキストやアイコン、またポップアップするヒントを設定します。

設定内容を半角のコンマで区切っていますので、書き換えるときには半角コンマを削除しないようにご注意ください。

myBar(1) = "段落蛍光_黄,カーソルのある段落を黄色の蛍光ペンで着色します,段落を着色_黄色,481,false,2"
[3]FaceID に該当する箇所の数字で、アイコンを設定します。こちらのページにあるようなアイコンを選べます。番号を指定します。

[5]表示スタイル に該当する一番最後の数字で、アイコンボタンにするのかテキストのボタンにするのか、両方を表示するのかを選択します。

サンプルでは2となっているので、テキストのボタンを作成します。

ボタンを増やす場合には、6行目の値を変更してください。以下のように数字を5に変更すると、1番目から5番目までの合計5つのボタンを作成できます。

Dim myBar(5) As String

この場合、もちろんボタンの情報を追加しますので、myBar(3) から myBar(5) までの情報を17行目~18行目の myBar(1) や myBar(2) にならって追加してください。

マクロ


Sub コマンドバーの作成()

 Dim myToolBar As CommandBar
 Dim myCbarCtl As CommandBarControl
 Dim myCbarName As String
 Dim myBar(2) As String
 Dim myString() As String
 Dim i As Integer

 '-------------------------------------------
 '前処理
 '-------------------------------------------
 'コマンドバーの名称の設定
 myCbarName = "MWM_ToolBar"
 
 '[0]表示,[1]ヒント,[2]マクロ名,[3]FaceID,[4]グループ開始,[5]表示スタイル 1=アイコン、2=テキスト、3=両方
 myBar(1) = "段落蛍光_黄,カーソルのある段落を黄色の蛍光ペンで着色します,段落を着色_黄色,481,false,2"
 myBar(2) = "段落蛍光_黄緑,カーソルのある段落を明るい緑色の蛍光ペンで着色します,段落を着色_明るい緑色,482,false,2"
 
 '保存先の指定(Normal.dotm)
 Application.CustomizationContext = ThisDocument

 'myCbarNameと同名のコマンドバーがあれば削除
 For Each myToolBar In Application.CommandBars
  If myToolBar.Name = myCbarName Then
   myToolBar.Delete
   Exit For
  End If
 Next

 '-------------------------------------------
 'コマンドバーの作成
 '-------------------------------------------
 'コマンドバーの作成
 Set myToolBar = CommandBars.Add(Name:=myCbarName, _
   Position:=msoBarTop, Temporary:=False)
 
 myToolBar.Visible = True

 'ボタンの作成
 For i = UBound(myBar) To 1 Step -1

  myString() = Split(myBar(i), ",")

  'ボタン追加
  Set myCbarCtl = CommandBars(myCbarName).Controls.Add(Type:=msoControlButton, Temporary:=False, Before:=1)

  With myCbarCtl
  
   'ラベル設定(表示)
   .Caption = myString(0)
   
   'ヒントの設定(ヒント)
   .TooltipText = myString(1)
   
   'アクション設定(マクロ名)
   .OnAction = myString(2)
   
   'FaceIDの設定(FaceID)
   .FaceId = myString(3)
   
   'グループ開始の設定(グループ開始)
   .BeginGroup = myString(4)
   
   '表示の設定(表示スタイル)
   .Style = myString(5)
   
  End With

  Set myCbarCtl = Nothing

 Next

 '-------------------------------------------
 '後処理
 '-------------------------------------------
 Set myToolBar = Nothing
 
End Sub

-コード
-, , ,