Excel2010のリボンに、Excel2000と同じプログラムコードのコピペでユーザー設定ボタンを生成する~02。(一応ツールバー単位で。ピボットテーブル一発作成ボタン等も追加。ドロップダウンでの階層化ボタンも追加。»Excel2010のリボンに、Excel2000と同じプログラムコードのコピペでユーザー設定ボタンを生成する~02。(一応ツールバー単位で。ピボットテーブル一発作成ボタン等も追加。ドロップダウンでの階層化ボタンも追加。)Excel2010のリボンに、Excel2000と同じプログラムコードのコピペでユーザー設定ボタンを生成する~02。(一応ツールバー単位で。ピボットテーブル一発作成ボタン等も追加。ドロップダウンでの階層化ボタンも追加。Excel2010のリボンに、Excel2000と同じプログラムコードのコピペでユーザー設定ボタンを生成する~02。(一応ツールバー単位で。ピボットテーブル一発作成ボタン等も追加。ドロップダウンでの階層化ボタンも追加。)※まだ書きかけです。※間違ってたらすみません。※メモ書きなので、自分でも意味不明な箇所も多いです。※32bitの2010までの話です。2013、2016はテストしてません。『~「マクロの記録」機能の応用:Excel2010のリボンに、Excel2003時代の古いメニューバーやメニューボタンを好きなように表示する方法。昔の印刷ダイアログ(懐かしい!)とか、余白設定の画面が出てきて笑えます。いいますか、やはり意外と便利な面もありました。(2010以降に慣れてしまわれた方はイマイチかもしれませんが・・・。こんな感じのことができます。アドインタブが自動生成され、その中にツールバーが組み込まれます。Excel2003以前のCommandBar関連のコードを使うと勝手にこうなります。下図のように階層化ボタンを作ることも可能です。このアドインタブによく使う機能をボタン化して置いておき、かつ、この「アドイン」タブが一番先頭でに開くように位置をかえておけば、相当、便利になると思います。(例えば→こちら)ユーザー設定に、フォントやセル書式、ウィンドウの固定、などのうち、一番よく使うメニューや、複合的な操作(複合的なレイアウト設定など)をするメニューなどを並べておけば、とても便利だと思います。結果的に「リボンの効率性・操作性の悪さ」をかなり解消できると思います。アドインでもないので、Excel起動時に起動が遅くなることもありません。「アドイン」タブが一番先頭でに開くように位置をかえるには、リボンの設定で下図のように、▲▼のボタンで上下に動かして、一番上までもっていって、OKします。下図のようになります。(コピーや切り取り、ズーム、いきなり印刷、などの各種ボタンは、他の組み込みツールバーからコピーしたものです。いうスタイルが一番操作がスムーズです。)※コピーじゃなくても、ID番号でいきなり表示することも可能です。クイックツールバーだけだと「文言」が登録できないので、文言が見たいものをリボンにボタン化し、文言が必要ないものをクイックツールバーにボタン化・・・、と分けて併用すれば、さらに便利になると思います。(リボンの側のボタンのアイコンの絵も変えられます。絵の番号は、こちらのWebページを参考にあらかじめ絵の番号を調べておきます。)※下図のようにボタンアイコンの絵には、オリジナルの絵を、イミディエイトで1行コードで設定(コピペ処理)することも可能です。操作したいツールバーの削除やボタンなどについて調査、ボタンアイコンの絵の変更などのコード※Shift+TABキー、もしくは、Homeキー、Homeキー+TAB数回、を押すと、目次付近に戻れます。※こちらは「パート02」です。「パート01」は→こちら。パート01も「補足」に結構重要なことが書いてありますのでそちらもご覧になってみてください。はじめに例えば次のようなことをして、Excelでの作業の効率化を図ることができます。(01)コピー、貼り付け、などのよく使うボタンをリボンの「アドイン」タブに自動生成(「アドイン」タブは勝手に生成されるので「アドイン」タブ用のプログラムコードは不要です。)(02)VBAプログラムコード(プロシージャ)をコマンドボタン化して、リボンの「アドイン」タブに自動生成(特にPERSONAL.XLSの内容を)具体的には次のようなことができます。リボンに「アドイン」タブと「ツールバー01」というツールバーを自動生成されるようにします。・選択範囲を「yyyy/mm/dd」形式にする、といったことなどができます。(※「アドイン」タブは、2010などの場合はツールバーをVBAで追加すると、勝手に作られるので、「アドイン」タブを作るプログラムは要りません。郵便番号変換ウィザードをインストールしてある場合も勝手に「アドイン」タブができていると思いますが、その場合はそこにツールバーの内容が組み込まれていきます。2003以前の場合はツールバーだけが普通に追加されて表示されます。)クイックアクセスツールバーとほとんど同じ感じになりますが、メニューボタンとVBAプログラムを紐付けすることにより、細かい制御ができるボタンを、クイックツールバーよりもかなり多く作れます。ボタンと名前(ボタンの文言)の両方を表示することができ、少し見やすくなります。クイックツールバーもすごく便利なのですが、デフォルトの機能ではアイコン絵が変えられないのとボタンの文言が設定できないのでボタンが増えたときに分かりにくくなってしまいます。クイックアクセスツールバーの代わりに、2003スタイルのツールバーで代用します。2010でも2003用のツールバー作成プログラムが動きますし(自動的に「アドイン」タブができてその中に作成されます)、XMLを使わずに済むのでラクと言えば楽かもしれません。XMLのエディタやらなんやらを使うよりは、バージョン2000から共通のやり方でVBAでやってしまうほうが面倒は無いと言えば無いかもしれません。好みの問題化とは思いますが・・・。リボンのタブを切り替えるのも面倒な、本当によく使う操作はクイックアクセスツールバーで、その他のよく使う機能は、「アドイン」タブにVBAでボタン化する、という2本柱で行くのも良いと思います。「PERSONAL.XLS」というファイルを作って、その中に書きます。そのプログラム(プロシージャ)とメニューボタンを、これまたVBAプログラミングで自動紐付けさせます。今回ここでしている作業はそういった自動作業となります。「マクロの記録」で作ったマクロを、「アドインタブに2003のコードでボタン追加」したりクイックツールバーに登録すると、「リボン系のアドイン」と違って起動時に読み込む必要がないので、Excelの起動が遅くなったりするようなことがなく、便利です。以下のような使い道があると思います。(01)「マクロの記録」で自動的に作ったマクロを登録する。セルの値などをいじらないような処理、たとえば、以下のような処理を自動化したいときにとても便利です。・マイクロソフトのOfficeは「リボン」になったせいで、2クリックも3クリックも操作が増えて操作が遅くならざるをえなくなってしまったので、例えば通常メニューのダイアログをリボン経由でワンクリックで出したい、などのとき。※ボタンとしての登録が、自分では難しかったら、以下の記事を誰か分かる人に読んでもらってやってもらってください。※マクロの自動記録とはすごく相性がいいので、ぜひ、併用してコスパアップに貢献してほしいです。汎用的なマクロではなくても、部分的に自動化されるだけでも十分にコスパアップに貢献できると思います。VBAがわからなくても自動化できるんですから。マクロの記録でなんともならなかったら、「UWSC」も併用すると便利です。UWSCについてはこちらと、こちらをご参照ください。UWSCの自動実行ファイルも、本記事の「アドインタブの自作メニュー・ボタン」から呼び出すことが可能です。(02)「マクロの記録」で作ったマクロを、一部、汎用的に作り替えたものを登録する・ピボットをワンクリック一発で出して設定もしてしまう(「ソースとなる表の行と列の可変化」や「ピボット自体の毎度行うオプション設定」など)(03)リボンの編集だとXMLを覚えるのがめんどくさい。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」ツールバー。操作したいツールバーの削除やボタンなどについて調査、ボタンアイコンの絵の変更などのコード」を使ってもらってもOKです。新しくボタンのみを追加したい場合は、そのようにプログラム内容を追記します。テストコード01」)だと、「CmdBarCelHennsyuuChkAndAdd01()」に6個めまでが書いてあるので、これを、同じようなコードを7つめ、8つめ、とボタンの登録のプログラムを追加し、そして、「CmdBarCelHennsyuuChkAndAdd01()」を実行します。"PERSONAL.XLS!×××××"」の行の「×××××」のところに追加したいボタン動作のプロシージャの名前を書くだけです。"×××××(&C)"」行はボタンの文言になるのでここも「×××××」のところを好きな文言に書き換えます。(以下の例を参考に)それに伴ってコメントも書き換えます。※本サンプルでは、ドロップダウンで階層化したメニューを7個めに追加したコードを最後にご紹介します。こちらなお、こちらのプログラムは、以前のパート01のものと違い、自動で目的のツールバーをいったん削除しますので、手動での削除は必要ありません。自動的に、再度、同じ名前でツールバーが登録されます。操作したいツールバーの削除やボタンなどについて調査、ボタンアイコンの絵の変更などのコード」を使ってもらってもOKです。ツールバーをいったん消すことなくボタンの追加のみができます。」みたいなコードを足していただくと、ボタンのアイコンの絵を変更することができます。「4」は絵の番号でこの例ではプリンタの絵です。ボタンの絵の番号についてはこちらのWebページをご参考にしてください。操作したいツールバーの削除やボタンなどについて調査、ボタンアイコンの絵の変更などのコード」の、「CmdBtnOnlyIcnChange01()」プロシージャなどを使ってもらうと変えることができます。変えたい絵の番号とやってもOKです。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以降でしか使えない技ですが・・・。操作したいツールバーの削除やボタンなどについて調査、ボタンアイコンの絵の変更などのコード」を見てください。その中の、「BtnName_n_Index_Check01()」プロシージャや「BarName_n_Index_Check01()」プロシージャなどであらかじめチェックしておきます。テストコード01以下のコードを標準モジュールにコピペして実行すると、「アドイン」タブと「ツールバー01」ツールバーが出来上がります。'あればいったん消してから再作成するプログラムです。'ボタンの表示形式を「イメージとテキスト」にします。'ループで変数利用しています。'メンテやコマンドボタン化に向くのではないかと思います。'「あるか無いか」のチェックプログラムが要りそうで面倒くさいためやりません。'作りたいツールバーの名前を、ここで「ツールバー01」決めておきます。'別のツールバーとして、リボンの「アドイン」タブに新しく生成されます。'必要に応じて以下のメッセージを発する。"」ツールバーが消えてしまっているようです。"」ツールバーが消えてしまっているようですので再作成します。ボタンの表示形式を「イメージとテキスト」にする。ボタンの表示形式を「イメージとテキスト」にする。ボタンの表示形式を「イメージとテキスト」にする。ボタンの「テキスト」部分を、「hms(&C)」に変更する。「(&C)」を付けないとエラーになる。ボタンの表示形式を「イメージとテキスト」にする。ボタンの「テキスト」部分を、「ymd(&C)」に変更する。「(&C)」を付けないとエラーになる。ボタンの表示形式を「イメージとテキスト」にする。ボタンの「テキスト」部分を、「ymd(&C)」に変更する。「(&C)」を付けないとエラーになる。ボタンの表示形式を「イメージとテキスト」にする。ボタンの「テキスト」部分を、「Pvt生成01(&C)」に変更する。「(&C)」を付けないとエラーになる。'以降、各ボタン用のコード(プロシージャ)です。'一部、使わないプロシージャもあります。'cell_hiduke_yyyy_mm_dd()の2つだけです。'時刻化するボタン用のプロシージャ(今回使います。'ユーザー定義の「yyyy/mm/dd」化するボタン用のプロシージャ(今回使います。'アクティブセルの列の空白セルを、前の行のセルの値で埋めるプログラムです。'インプットボックスで使います。キャンセル時に文字列型のデータ(空文字)が代入されるのですが、その際変数が数値型だとエラーになってしまうため、バリアント型を使います。中には、ユーザーがどのボタンを押したかの応えの情報(番号)が格納されます。'これはMsgBox関数の中でのきまりで、「はい」が押されたら「6」、「いいえ」が押されたら「7」、と決められています。