● Excel2010のリボンに、Excel2000と同じプログラムコードのコピペでユーザー設定ボタンを生成する~02。(一応ツールバー単位で。ピボットテーブル一発作成ボタン等も追加。ドロップダウンでの階層化ボタンも追加。)

※まだ書きかけです。すみません。
※間違ってたらすみません。
※メモ書きなので、自分でも意味不明な箇所も多いです。ごめんなさい。

※32bitの2010までの話です。2013、2016はテストしてません。(できるかもしれませんけど)

※関連記事
~「マクロの記録」機能の応用:Excel2010のリボンに、Excel2003時代の古いメニューバーやメニューボタンを好きなように表示する方法。昔の印刷ダイアログ(懐かしい!)とか、余白設定の画面が出てきて笑えます。といいますか、やはり意外と便利な面もありました。(2010以降に慣れてしまわれた方はイマイチかもしれませんが・・・。~
『「マクロ」のリボンへのメニューボタン化・関連の記事5つ』→12345
用語:ExcelやWordにおける「マクロ」とは?VBAと何が違う?(「ExcelやWord自身」は「マクロ」をどう判別・区別しているか?)Accessの場合は?
  
  
↓ こんな感じのことができます。
 (↓ アドインタブが自動生成され、その中にツールバーが組み込まれます。
   Excel2003以前のCommandBar関連のコードを使うと勝手にこうなります。
   下図のように階層化ボタンを作ることも可能です。)

↑ このアドインタブによく使う機能をボタン化して置いておき、かつ、この「アドイン」タブが一番先頭でに開くように位置をかえておけば、相当、便利になると思います。
(例えば→こちら
ユーザー設定に、フォントやセル書式、ウィンドウの固定、などのうち、一番よく使うメニューや、複合的な操作(複合的なレイアウト設定など)をするメニューなどを並べておけば、とても便利だと思います。

結果的に「リボンの効率性・操作性の悪さ」をかなり解消できると思います。アドインでもないので、Excel起動時に起動が遅くなることもありません。

「アドイン」タブが一番先頭でに開くように位置をかえるには、リボンの設定で下図のように、▲▼のボタンで上下に動かして、一番上までもっていって、OKします。

下図のようになります。

(コピーや切り取り、ズーム、いきなり印刷、などの各種ボタンは、他の組み込みツールバーからコピーしたものです。やっぱり、こういうスタイルが一番操作がスムーズです。)
※コピーじゃなくても、ID番号でいきなり表示することも可能です。詳しくは→こちら

また、クイックツールバーだけだと「文言」が登録できないので、文言が見たいものをリボンにボタン化し、文言が必要ないものをクイックツールバーにボタン化・・・、と分けて併用すれば、さらに便利になると思います。(リボンの側のボタンのアイコンの絵も変えられます。絵の番号は、こちらのWebページを参考にあらかじめ絵の番号を調べておきます。後述のプログラムの「.FaceId =×××」 の部分です。)

※下図のようにボタンアイコンの絵には、オリジナルの絵を、イミディエイトで1行コードで設定(コピペ処理)することも可能です。

  
  
目次
 ★ はじめに
 ★ 使い道
 ★ PERSONAL.XLS(xlsb)を配置する場所
 ★ リボンの中に自動生成される単位
 ★ ツールバーの削除の方法
 ★ ボタンの増やし方の方法
 ★ ボタンのアイコンの絵の変更方法
 ★ ボタンのアイコンの絵を自作のビットマップの絵に変更する方法
 ★ テストコード01
 ★ ツールバーに、階層化したドロップダウンのメニューボタンを追加する例
 ★ 操作したいツールバーの削除やボタンなどについて調査、ボタンアイコンの絵の変更などのコード
※Shift+TABキー、もしくは、Homeキー、Homeキー+TAB数回、を押すと、目次付近に戻れます。
  
  
※こちらは「パート02」です。「パート01」は→こちら。
パート01も「補足」に結構重要なことが書いてありますのでそちらもご覧になってみてください。

  
  
★ はじめに

例えば次のようなことをして、Excelでの作業の効率化を図ることができます。

(01)コピー、貼り付け、などのよく使うボタンをリボンの「アドイン」タブに自動生成
(「アドイン」タブは勝手に生成されるので「アドイン」タブ用のプログラムコードは不要です。)
(02)VBAプログラムコード(プロシージャ)をコマンドボタン化して、リボンの「アドイン」タブに自動生成(特にPERSONAL.XLSの内容を)

具体的には次のようなことができます。

リボンに「アドイン」タブと「ツールバー01」というツールバーを自動生成されるようにします。また、各ボタンは通常のコマンドやVBAプログラムと紐付けされていて、
・コピー、
・値の貼り付け、
・選択範囲を「hh:mm:ss」形式のセル書式にする、
・選択範囲を「yyyy/mm/dd」形式にする、
といったことなどができます。
(※「アドイン」タブは、2010などの場合はツールバーをVBAで追加すると、勝手に作られるので、「アドイン」タブを作るプログラムは要りません。郵便番号変換ウィザードをインストールしてある場合も勝手に「アドイン」タブができていると思いますが、その場合はそこにツールバーの内容が組み込まれていきます。2003以前の場合はツールバーだけが普通に追加されて表示されます。)

クイックアクセスツールバーとほとんど同じ感じになりますが、メニューボタンとVBAプログラムを紐付けすることにより、細かい制御ができるボタンを、クイックツールバーよりもかなり多く作れます。また、ボタンと名前(ボタンの文言)の両方を表示することができ、少し見やすくなります。
クイックツールバーもすごく便利なのですが、デフォルトの機能ではアイコン絵が変えられないのとボタンの文言が設定できないのでボタンが増えたときに分かりにくくなってしまいます。

なので、クイックアクセスツールバーの代わりに、2003スタイルのツールバーで代用します。2010でも2003用のツールバー作成プログラムが動きますし(自動的に「アドイン」タブができてその中に作成されます)、XMLを使わずに済むのでラクと言えば楽かもしれません。XMLのエディタやらなんやらを使うよりは、バージョン2000から共通のやり方でVBAでやってしまうほうが面倒は無いと言えば無いかもしれません。好みの問題化とは思いますが・・・。
リボンのタブを切り替えるのも面倒な、本当によく使う操作はクイックアクセスツールバーで、その他のよく使う機能は、「アドイン」タブにVBAでボタン化する、という2本柱で行くのも良いと思います。

なお、ボタンを押したときに動かすプログラム(プロシージャ)は、
C:\Users\ユーザー名\AppData\Roaming\Microsoft\Excel\XLSTART というフォルダの中に、
「PERSONAL.XLS」というファイルを作って、その中に書きます。

そして、そのプログラム(プロシージャ)とメニューボタンを、これまたVBAプログラミングで自動紐付けさせます。

今回ここでしている作業はそういった自動作業となります。
  
  
★ 使い道

例えば「マクロの記録」で作ったマクロを、「アドインタブに2003のコードでボタン追加」したりクイックツールバーに登録すると、「リボン系のアドイン」と違って起動時に読み込む必要がないので、Excelの起動が遅くなったりするようなことがなく、便利です。
以下のような使い道があると思います。

(01)「マクロの記録」で自動的に作ったマクロを登録する。
特に、セルの値などをいじらないような処理、たとえば、以下のような処理を自動化したいときにとても便利です。
・度重なるレイアウト変更(頻度が多い定型的なレイアウト変更)
・同様のセル書式設定
・同様のウィンドウの固定場所の変更や子ウィンドウの分割その他
・同様の「いつも決まったオートシェイプの作成や境界線の変更、フォント設定の変更」など
・逆に、頻度が少なすぎて処理内容を忘れてしまいがちな上記のようなセルの値の編集をしないような処理
・マイクロソフトのOfficeは「リボン」になったせいで、2クリックも3クリックも操作が増えて操作が遅くならざるをえなくなってしまったので、例えば通常メニューのダイアログをリボン経由でワンクリックで出したい、などのとき。

※ボタンとしての登録が、自分では難しかったら、以下の記事を誰か分かる人に読んでもらってやってもらってください。
『「マクロ」のリボンへのメニューボタン化・関連の記事5つ』→12345
用語:ExcelやWordにおける「マクロ」とは?VBAと何が違う?(「ExcelやWord自身」は「マクロ」をどう判別・区別しているか?)Accessの場合は?

※マクロの自動記録とはすごく相性がいいので、ぜひ、併用してコスパアップに貢献してほしいです。必ずしも汎用的なマクロではなくても、部分的に自動化されるだけでも十分にコスパアップに貢献できると思います。
VBAがわからなくても自動化できるんですから。
もしマクロの記録でなんともならなかったら、「UWSC」も併用すると便利です。
UWSCについてはこちらと、こちらをご参照ください。
UWSCの自動実行ファイルも、本記事の「アドインタブの自作メニュー・ボタン」から呼び出すことが可能です。

(02)「マクロの記録」で作ったマクロを、一部、汎用的に作り替えたものを登録する
・ピボットをワンクリック一発で出して設定もしてしまう(「ソースとなる表の行と列の可変化」や「ピボット自体の毎度行うオプション設定」など)

(03)リボンの編集だとXMLを覚えるのがめんどくさい。アドインタブへのツールバー登録なら、2003のコマンドバー(ツールバー)操作関連のコードがそのまま使える

(04)自分で作ったビットマップのアイコンを、ボタンのアイコンとしてちゃちゃちゃっと使いたい

  
  
★ PERSONAL.XLS(xlsb)を配置する場所
C:\Users\ユーザー名\AppData\Roaming\Microsoft\Excel\XLSTART

※「PERSONAL.XLS」の作り方
2010の場合、xlsb拡張子ですでに「PERSONAL.XLS」ではなくて「PERSONAL.XLSB」ができている場合もあります。その場合はこれ以降の処置は必要ありません。「PERSONAL.XLSB」は、「開発」→「マクロの記録」→マクロの保存先で「個人用マクロブック」となっている状態で「OK」することで自動作成されます。「C:\Users\ユーザー名\AppData\Roaming\Microsoft\Excel\XLSTART」を開いて、「PERSONAL.XLSB」ができていたら、新たにxlsを作る必要はありません。

xlsでやりたいときは次のようにします。(すでにある「PERSONAL.XLS」を使いたいときも途中から同じです。)
最初、xlsx拡張子として画面が開きますので、先に、マイドキュメントなどに空のxlsファイルを別名保存します。ファイル→名前を付けて保存→ファイルの種類のドロップダウンメニューを「Excel97-2003ブック(xls)」に変更→PERSONAL.XLSという名前で「OK」します。(Excel2010でも「PERSONAL.XLS」という名前でOKです。拡張子はxlsmではなくて「xls」です。)

空のxlsファイルができたら「C:\Users\ユーザー名\AppData\Roaming\Microsoft\Excel\XLSTART」というフォルダに、そのファイルを移動します。

なお、2007以降?の場合は、「xlsb」拡張子ほうのが本当みたいです。自動的に個人用マクロブックとして生成されるのが普通です。でもxls拡張子でも動きます。もしxlsで不具合が出るなら前述の容量で今度は空のxlsbファイルを作って、それにプログラムをインポートすればOKかと思います。(インポートできるのかな?できなかったら単純にモジュールごとにxlsからコピペでOKです。)

移動完了したら、いったんそのファイルを開いて「非表示」の設定にして上書き保存して閉じます。
「非表示」にしないと普通のExcelファイルを開いたときに「PERSONAL.XLS」もいっしょに画面に表示されてしまうためです。これで共用部品化設定が完了です。

非表示設定のしかたは以下のとおりです。
2007以降の場合は「表示」タブ→「ウィンドウ」グループ→「表示しない」でいいようです。
「表示しない」が無いように見えたら、アイコンだけ出ている状態かもしれません。画面を最大化するか横方向に目いっぱい広げるとアイコンと文言の両方が見えると思います。
2003以前の場合は、ウィンドウ→「表示しない」でOKです。

  
  
★ リボンの中に自動生成される単位
ツールバー単位(ツールバーの名前単位)
  
  
★ ツールバーの削除の方法
こちらのプログラムは、以前のパート01のものと違い、自動で目的のツールバーをいったん削除しますので、手動での削除は必要ありませんが、一応、手動の方法も書いておきます。

Excel2010の場合ですと、ツールバーのどのボタンの上でもいいので右クリックして「ユーザー設定のツールバーの削除」でOKです。

「アドイン」タブの中に単一のツールバーしかない場合、それを削除すると、同時に「アドイン」タブも消えます。

複数のツールバーが生成されていた場合、最後のツールバーが削除されると「アドイン」タブも消えます。

再度、プログラムでツールバーを自動生成すると、同名のツールバーが生成されます。
(本サンプルでは「ツールーバー01」ツールバー。)

※2019/02/09追記
おわりのほうの「★ 操作したいツールバーの削除やボタンなどについて調査、ボタンアイコンの絵の変更などのコード」を使ってもらってもOKです。
  
  
★ ボタンの増やし方の方法

新しくボタンのみを追加したい場合は、そのようにプログラム内容を追記します。
下記サンプル(「★ テストコード01」)だと、「CmdBarCelHennsyuuChkAndAdd01()」に6個めまでが書いてあるので、これを、同じようなコードを7つめ、8つめ、とボタンの登録のプログラムを追加し、そして、「CmdBarCelHennsyuuChkAndAdd01()」を実行します。

基本的には、(6)のようなカッコの中の数字を、7とか、8とかにして(連番になってないとエラーになるかもしれません)、「Newbar.Controls(7).OnAction = "PERSONAL.XLS!×××××"」の行の「×××××」のところに追加したいボタン動作のプロシージャの名前を書くだけです。「Newbar.Controls(7).Caption = "×××××(&C)"」行はボタンの文言になるのでここも「×××××」のところを好きな文言に書き換えます。(以下の例を参考に)
それに伴ってコメントも書き換えます。

例:7個目の場合
Newbar.Controls.Add ID:=2950
Newbar.Controls(7).Style = msoButtonIconAndCaption
Newbar.Controls(7).Caption = "×××××(&C)" 'ボタンの文言を好きな文言に設定
Newbar.Controls(7).OnAction = "PERSONAL.XLS!×××××" '動かしたいプロシージャを設定

※本サンプルでは、ドロップダウンで階層化したメニューを7個めに追加したコードを最後にご紹介します。→  こちら

なお、こちらのプログラムは、以前のパート01のものと違い、自動で目的のツールバーをいったん削除しますので、手動での削除は必要ありません。自動的に、再度、同じ名前でツールバーが登録されます。

※2019/02/09追記
おわりのほうの「★ 操作したいツールバーの削除やボタンなどについて調査、ボタンアイコンの絵の変更などのコード」を使ってもらってもOKです。ツールバーをいったん消すことなくボタンの追加のみができます。
また、追加時に、「myBar.Controls(8).FaceId = 4 」みたいなコードを足していただくと、ボタンのアイコンの絵を変更することができます。「4」は絵の番号でこの例ではプリンタの絵です。
ボタンの絵の番号についてはこちらのWebページをご参考にしてください。
  
  
★ ボタンのアイコンの絵の変更方法

※2019/02/09追記
おわりのほうの「★ 操作したいツールバーの削除やボタンなどについて調査、ボタンアイコンの絵の変更などのコード」の、「CmdBtnOnlyIcnChange01()」プロシージャなどを使ってもらうと変えることができます。

イミディエイトウィンドウで
Commandbars("ツールバー名").Controls(変えたいボタンの番号).FaceID = 変えたい絵の番号
とやってもOKです。
(例:Commandbars("ツールバー01").Controls(8).FaceID = 4)

変更には絵の番号が必要なのですが、それは、こちら(OfficeTANAKA様)こちら(リボンの君とSuyamaSoftさま) のWebページをご参考にしてください。

また、絵を変えたいボタンの番号やそのボタンを含んでいるツールバーの名前なども必要なのですが、それは「BtnName_n_Index_Check01()」プロシージャなどや「BarName_n_Index_Check01()」プロシージャなどでチェックしてみてください。
  
  
★ ボタンのアイコンの絵を自作のビットマップの絵に変更する方法

流れとしては、ペイントで絵を描いて、それをコピーしてクリップボードへ送り、それを「PasteFace」メソッドでボタンに貼り付けます。「PasteFace」はクリップボードにある画像(多分BMP)をボタンに貼り付けてくれる命令です。

(01)ペイントを開きます。
(02)16×16のキャンバス設定にします。
(03)あまりにちっこいので、最大限まで拡大表示します。
(04)好きな絵を描きます。
(05)一応、いったん保存します。(Officeやパソコンの再インストール後に同じ絵をアイコン復活させたいなら。)
(06)再度描いた絵を開いて、すべて選択したのち、「コピー」もします。(クリップボードに描いた画像を送る
(07)イミディエイトウィンドウで以下のようにコードを実行
Commandbars("対象のツールバー名").Controls(絵を変えたいボタンの番号).PasteFace

例:Commandbars("ツールバー01").Controls(8).PasteFace

※キャンバスの大きさは、16×16よりも多少大きくても大丈夫ですが、あまりに大きいとコードを実行しても絵が正常に表示されません。
50×50前後くらいでご自分でも色々と試してみてください。

そのほか、こちら↓もご参考に。(2007以降でしか使えない技ですが・・・。)

http://suyamasoft.blue.coocan.jp/Ribbon/ReverseResolution/get_idMso/index.html

※対象のツールバーの名前や、絵を変えたいボタンの番号を調べるには、おわりのほうの「★ 操作したいツールバーの削除やボタンなどについて調査、ボタンアイコンの絵の変更などのコード」を見てください。
その中の、「BtnName_n_Index_Check01()」プロシージャや「BarName_n_Index_Check01()」プロシージャなどであらかじめチェックしておきます。
  
  
★ テストコード01
以下のコードを標準モジュールにコピペして実行すると、「アドイン」タブと「ツールバー01」ツールバーが出来上がります。

  
  
  
  
★ ツールバーに、階層化したドロップダウンのメニューボタンを追加する例

6個めまでは前述のコードとまったく同じです。
違うのは7個目以降だけです。なので、7個目以降のコードだけを前述の6個目の下から「Newbar.Visible = True」の行の間にコピペしてもOKです。

本サンプルでは、7個目のボタンをドロップダウン形式のメニューボタンにし、さらにその中の3個目も、ドロップダウン形式のメニューボタンにしました。
これで階層化ができるので、インターフェイスが少しすっきりできるのではないかと思います。
こちらのテストでは、Excel2000、Excel2010、どちらでも動きました。
(アイコンの絵の対応表が無いので絵は適当な番号で変えてあります。)

↓こんな感じになります。

では、以下、コードです。
標準モジュールにコピペするなどしてテストしてみてください。

※ボタンのアイコンの絵は、2003側で気に入った絵をみつけて、あらかじめその番号を調べておかないといけなかったと思います。たしか・・・。「.FaceId =×××」 の部分です。うろ覚えですみません。

このアドインタブによく使う機能をボタン化して置いておき、かつ、このアドインタブが一番先頭でに開くように位置をかえておけば、相当、便利になると思います。
リボンの効率性の悪さをかなり解消できると思います。アドインでもないので、Excel起動時に起動が遅くなることもありません。

  
  

★ 操作したいツールバーの削除やボタンなどについて調査、ボタンアイコンの絵の変更などのコード

  
  
※関連記事
Excel2010のリボンに、Excel2000と同じプログラムコードのコピペでユーザー設定ボタンを生成する。(一応ツールバー単位で)
https://euc-access-excel-db.com/tips/ct08_exceltruebasic/ct080860_vba_basic/tool-bar-auto-make-excel

Word2010のリボンに、Word2000と同じプログラムコードのコピペでユーザー設定ボタンを生成する。(一応ツールバー単位で)
https://euc-access-excel-db.com/tips/ct08_exceltruebasic/ct080860_vba_basic/tool-bar-auto-make-word