【VBAリファレンス】業務効率を劇的に高めるExcel VBA:FaceIDを活用したカスタムリボン・メニュー作成術

スポンサーリンク

概要

Excel VBAで独自のリボンメニューやコマンドバーを作成する際、もっとも悩ましいのが「ボタンに表示するアイコンの選択」です。標準的なアイコンや自作の画像ファイルを使用する方法もありますが、Excelには「FaceID」と呼ばれる、数千種類に及ぶ内部アイコンライブラリが隠されています。このFaceIDを使いこなすことで、特別な画像ファイルを用意することなく、Office標準の洗練されたアイコンを自在に呼び出し、ユーザーにとって直感的でプロフェッショナルなツールを作成することが可能になります。本記事では、FaceIDの全容を解明し、それを効率的に取得・活用するための実践的なテクニックを徹底解説します。

詳細解説:FaceIDとは何か

FaceIDとは、ExcelやWordといったOfficeアプリケーションのボタンコントロールに割り当てられた、内部的な整数IDのことです。古くからのExcelユーザーにはお馴染みの概念ですが、リボンの登場以降、その重要性はむしろ増しています。

リボンカスタマイズ(XML)や古いCommandBarオブジェクトにおいて、`.FaceId`プロパティに数値を代入することで、そのIDに対応したアイコンが自動的に表示されます。例えば、「1」を指定すれば「新規作成」のアイコン、「2」を指定すれば「開く」のアイコンといった具合です。

しかし、FaceIDは公式なドキュメントとして全リストが公開されているわけではありません。そのため、開発現場では「どの数字がどのアイコンに対応しているか」を一覧表示する「FaceIDブラウザ」を自作するのが、ベテランエンジニアの定石となっています。数百から数千のIDが存在しますが、主要なものは0から4000番台に集中しており、これらを検索できるようにしておくことで、ツール開発のスピードは劇的に向上します。

サンプルコード:FaceID一覧をシートに出力する

まずは、自分のExcel環境でどの番号がどのアイコンに対応しているかを確認するための、実用的なツールを作成しましょう。以下のコードは、新規シートを作成し、指定範囲のFaceIDと実際のアイコンを一覧出力するものです。


Sub CreateFaceIDList()
    Dim ws As Worksheet
    Dim cb As CommandBar
    Dim ctl As CommandBarButton
    Dim i As Long, j As Long, k As Long
    
    ' 新規シートを作成
    Set ws = Worksheets.Add
    ws.Name = "FaceID一覧"
    
    ' 一時的なコマンドバーを作成してアイコンを表示
    Set cb = CommandBars.Add(Position:=msoBarFloating, Temporary:=True)
    Set ctl = cb.Controls.Add(Type:=msoControlButton)
    
    ' 見出しの設定
    ws.Cells(1, 1).Value = "ID番号"
    ws.Cells(1, 2).Value = "アイコン"
    
    ' 0から500までを表示(必要に応じて数値を変更してください)
    k = 2
    Application.ScreenUpdating = False
    For i = 0 To 500
        On Error Resume Next
        ctl.FaceId = i
        ctl.CopyFace
        ws.Cells(k, 1).Value = i
        ws.Paste ws.Cells(k, 2)
        
        ' セルの高さを調整
        ws.Rows(k).RowHeight = 20
        k = k + 1
        On Error GoTo 0
    Next i
    Application.ScreenUpdating = True
    
    ' クリーンアップ
    cb.Delete
    MsgBox "FaceIDの一覧作成が完了しました。"
End Sub

このコードを実行すると、シート上に「ID番号」と「アイコン」がずらりと並びます。これを参照することで、自分のツールに最適なアイコンを即座に見つけることができます。

実務アドバイス:FaceID活用の極意

FaceIDを活用する上で、プロとして意識すべき「3つの鉄則」を伝授します。

1. 視覚的統一感の維持
ツールを開発する際、アイコンを適当に選ぶのはNGです。「保存」には必ず同じIDを使用し、「削除」には必ずゴミ箱アイコンを使用する、といった一貫性がユーザーの学習コストを下げます。Office標準のアイコンはユーザーの脳に刷り込まれているため、標準的な操作には標準的なFaceIDを割り当てるのが鉄則です。

2. 検索機能付きリストの作成
上記のサンプルコードをベースに、Find関数やフィルター機能を追加した「FaceID検索ツール」を作成してください。業務中に「あ、あのアイコン何番だっけ?」と迷った際に、即座に検索できる環境を構築しておくことが、開発効率を維持する鍵です。

3. 画像ファイルとの併用
FaceIDは便利ですが、完全に自由なデザインではありません。もし、特定のブランドロゴや業務固有のシンボルが必要な場合は、`LoadPicture`関数を使用して外部アイコンを読み込む必要があります。しかし、ボタンの9割をFaceIDで構成し、重要な機能のみを自作アイコンにすることで、ツール全体の軽量化と洗練されたデザインを両立させることができます。

高度な応用:リボンXMLでの利用

現代のExcel(リボンUI)において、FaceIDを直接指定するには「imageMso」という属性を使用するのが主流です。FaceID(数値)は主に古いCommandBar用ですが、実は「Officeアイコン名」を知ることで、リボンXMLでも同様の強力な表現が可能です。

例えば、リボンXML内で以下のように記述します。
`

タイトルとURLをコピーしました