ツールバーのボタンや、メニューのアイコンには、Excelが内部で持っている図を設定できます。
やり方は他のコンテンツで何度も書いていますが、
Set NewC = NewM.Controls.Add With NewC .Caption = "保護解除(&U)" .OnAction = "UnProtectSheet" .BeginGroup = False .FaceId = 277 End With
とか
Application.CommandBars("faceid").Controls(5).FaceId = 351
のように、FaceIdプロパティに番号を指定します。
この番号は、Microsoftから正式なドキュメントとしては公開されておらず、使いたい人は自分で調べるしかありません。この機能が搭載されたExcel 97時代に、1番から3000番までのFaceId画像を調べて一覧画像にしました。当時はNIFTYのライブラリに登録しておいたのですが、いつのまにかNIFTYもパソコン通信をやめてしまい(ry
最近、この一覧を欲しいという方が多いので、あらためて公開することにします。
一覧画像は次のようになっています。
左から「1~250」のブロック、「251~500」のブロックと別れていて、3000番まであります。本当は3000番より大きいFaceId番号もあるかもしれませんが、この先はほとんどが空欄です。まぁこれくらいあれば十分でしょう。各ブロックは、番号の小さい順に、左上から右下に向かって並べています。
隣の「251~500」ブロックは、1行目の左端から右に251、252、253…と並び、右下が500番です。わかりますよね(^^;
画像はExcel 97で抜き出したものです。現在ではデザインが多少変わっている画像もありますが、基本的に画像の番号が変わることはありません。たとえデザインが変わっても「上書き保存」のFaceId番号はずっと3番です。
一覧画像はBMP形式で、サイズは8,064,054byteとデカいです。圧縮していますので解凍してご利用ください。なお、ツールバーのアイコン画像はMicrosoftの著作物です。個人的に使用することはかまいませんが、一般的なプログラムや写真などと同じように、著作権によって保護されていることを留意してください。
下記リンクからダウンロードできます。
FaceId一覧画像のダウンロード「faceid.lzh(164,696byte)」
右クリックして[対象をファイルに保存]を実行してください
ついでに、標準で使用されている画像を、自分で作成したボタンやメニューに適用する方法をお教えしましょう。たとえば[ワークシート分析]ツールバーにある[エラーのトレース]ボタンと同じ画像を使いたいときは、次のようにして[エラーのトレース]ボタンのFaceId番号を調べます。
まず[ワークシート分析]ツールバーの名前(Nameプロパティ)を調べなければなりません。タイトルバーに表示されているからといって、これはCommandBars("ワークシート分析")ではありませんよ。調べるにはいくつかの方法がありますが、最も簡単な方法のひとつは、[ワークシート分析]ツールバーを表示しておいて、現在表示されている全ツールバーの名前を調べるやり方です。次のコードは、現在表示されているメニューとツールバーの名前をイミディエイトウィンドウに出力します。
Sub Sample1() Dim c For Each c In CommandBars If c.Visible Then Debug.Print c.Name Next c End Sub
おそらく「Worksheet Menu Bar」や「Standard」と共に「Formula Auditing」という名前が表示されたことでしょう。これが[ワークシート分析]ツールバーの名前(Nameプロパティ)です。なぜわかるかですって?勘です。違ったら別のを試せばいいだけの話です。わからないときは、恐れずチャレンジしてみましょう。このCommandBars("Formula Auditing")の7番目が[エラーのトレース]ボタンがどうか次のように確認してみます。
Sub Sample2() With CommandBars("Formula Auditing").Controls(7) MsgBox .TooltipText & vbCrLf & .FaceId End With End Sub
どうやら間違いなさそうです。ついでにFaceId番号は463とわかりました。これを自作ツールバーのボタンに設定してみます。ここでは[ユーザー設定 1]ツールバーにボタンを1つ配置しているとします。
次のコードは、[ユーザー設定 1]ツールバー左端にあるボタンのFaceIdプロパティに463を設定します。
Sub Sample3() CommandBars("ユーザー設定 1").Controls(1).FaceId = 463 End Sub
ここでは解説しませんが、同じ方法でメニューに表示されているFaceId番号を調べることも可能です。