道草日記

通勤幾星霜…寄り道回り道の日記です。

VBAで組み込みのツールバーを拡張

2008-12-27 | VBA
ExcelのVBAで新しいツールバーを追加する解説はネットでもよく見かける。しかし、複雑な処理を行うマクロの場合は、既存の組み込みのツールバーを拡張したほうが使いやすい場合がある。参考になるサンプルを見つけたので、処理部分を整理してみた。

(1) 既存のボタンをツールバー上にコピーする場合
 他のツールバーや、ツールバー内のサブバー中の既存のボタンをコピーして配置できる。これをVBAで行うには、ボタンIDが必要となるので、以下のより取得する。
① メインメニューの[表示]-[ツールバー]で、コピー先のツールバーを表示させる。
② メインメニューで、新しいマクロの記録を開始。
③ メインメニューの[ツール]-[ユーザー設定]で、ユーザー設定ダイアログを表示
④ 「コマンド」タブで、「分類」でコピー元のバーを選び、「コマンド」で目的のボタンを探す。
⑤目的のボタンが見つかったら、クリックし①で表示しておいた目的のツールバーへドラッグする。もし、移動できない場合は、そのボタンは目的のツールバーには設置できない。
⑤ マクロ記録を終了し、VBEでコードを確認
(例)   図形描画ツールバーの6番目に「グループ化」ボタンを追加
  Application.CommandBars("Drawing").Controls.Add Type:=msoControlButton, ID:=164, Before:=6

(2) マクロを起動するための新規ボタンを追加する場合
 よく解説されている新規ツールバーへのボタン追加と同じ。ボタンアイコンを変えたい場合は、「FaceId」により組み込みのアイコンが使える。以下を参照のこと。
   ・ツールバー操作 (Excelでお仕事)
   ・ツールバー追加の基本 (Office TANAKA)
   ・FaceIDの表ダウンロード (Office TANAKA)
 
(3) ボタン配置の順番とツールバーの中の「改行」
 ボタン配置の順番は、Before:=1 のように設定する。この番号は中間を飛ばさず、必ず1からの連番をつけること。
 ツールバー内の改行は、行の先頭となるボタンで「.BeginGroup = True」を加える。

(4) VBAのサンプルコード
  描画ツールバーに機能をボタンを追加する。以下をThisWorkbookに記述すると、起動時にツールバーを表示する。

Private Sub Workbook_Open()
    Dim cmbar As Object
   
    With Application.CommandBars("Drawing")    '描画ツールバー指定
        .Protection = msoBarNoChangeVisible
       
         ' 図形描画ツールバーの1個目に直線ボタンを追加
        .Controls.Add Type:=msoControlButton, ID:=130, Before:=1
       
         ' 2個目にグループ化ボタンの追加し、改行
         ' 改行設定のためcbにSetしているが、上記と違いAddメソッドが
         ' カッコ書きになっていることに注意
        Set cmbar = .Controls.Add(Type:=msoControlButton, ID:=164, Before:=2)
        cmbar.BeginGroup = True ' 改行後の1個目に設定
       
            ' 自作マクロを呼び出すボタンを追加
        Set cmbar = .Controls.Add(Type:=msoControlButton, Before:=3)
        With cmbar
            .Caption = "自作マクロ"
            .FaceId = 1000
            .OnAction = "my_macro"
        End With
        .Position = msoBarFloating  ' バーを画面内に切り離し
        .Width = 100
        .Height = 345
        .Visible = True ' 表示する
    End With
End Sub
' ----------------------------------------------

改悪されたExcel 2007
 マクロを組む上で非常に便利だったツールバーだが、マイクロソフトは何を勘違いしたか、Excel 2007で「リボン」という史上最悪の改悪を行い、ツールバーを廃止してしまった。元に戻すように要求するため、不買運動として2003以前を使い続けたい。


最新の画像もっと見る

コメントを投稿

ブログ作成者から承認されるまでコメントは反映されません。