概要
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内で以下のように記述します。
``
ここで「FileSave」が、FaceIDに対応するアイコン名称です。ID番号だけでなく、この「imageMso」名も併せて控えておくことが、今後のリボン開発において大きな武器となります。
まとめ
FaceIDは、Excel VBA開発者にとっての「宝の地図」です。単なる数値の羅列に見えるものの中に、Office開発チームが長年かけて作り上げた、洗練されたユーザーインターフェースのパーツが詰め込まれています。
今回紹介した一覧作成コードを活用し、自分だけの「アイコン辞書」を作成してみてください。そして、開発するツールに標準的なアイコンを適切に配置することで、エンドユーザーから「まるでExcel標準機能の一部のように使いやすい」と評価されるような、最高品質の業務アプリケーションを構築していきましょう。
VBAは、コードの書き方一つで、その有用性が大きく変わります。アイコン選びという「細部」へのこだわりこそが、一流のVBAエンジニアと、そうでないエンジニアを分かつ決定的な境界線なのです。さあ、今すぐあなたのツールに、最適なFaceIDを組み込んでみてください。
