Access2000VBA・Excel2000VBA独学~「マクロの記録」機能の応用:Excel2010のリボンに、Excel2003時代の古いメニューバーやメニューボタンを好きなように表示する方法。昔の印刷ダイアログ(懐かしい!)とか、余白設定の画面が出てきて笑えます。といいますか、やはり意外と便利な面もありました。(基本、不完全だし、2010以降に慣れてしまわれた方はイマイチかもしれませんが・・・。)~
※まだ書きかけです。すみません。
※間違ってたらすみません。
※メモ書きなので、自分でも意味不明な箇所も多いです。ごめんなさい。
結局僕はとてつもないバカでした。今はクイックツールバーでほとんど間に合っちゃうんですね。そんなことも知らないExcel音痴です。でも、結構色々とわかりましたので、クイックツールバーだけでは解決できない複数のコマンドを混ぜたマクロやその他のマクロを「アドイン」タブに配置すれば、それはそれで役に立ちそうな気もします。
本記事は、「Excelの機能をちゃんと知らないバカがVBAをいじるとこうなる」、という「悪い見本(僕)」としてご活用ください。
※ 本記事は、Excel2010の32bitでのお話です。(ほかのバージョンでは未検証です。)
そして、基本、「不完全」です。
また、Excelをショートカットキーばかりで操作する方には、(もともと不完全な話なので)まったく関係のない・かえってジャマ・かつ・作業効率を落としかねない話ですので、もしかしたらあまり読まないほうがいいかもしれません。「Excelのエキスパートではない方で、どうにもリボンがめんどくさい方(僕はコレ。)」、あるいは逆にExcelを単なる関数多用の「作表ばかり」ではなく、「超多角的瞬間集計計算機・真のコンピュータ」としても両方、常に利用している方、あるいは、自社ユーザーにそれらの方(特に前者)が多い、というケースのほうが役に立つかもしれません(下図参照)。
ただ、調べてみましたろころ、一応、ショートカットキーも使えるようですので、その意味では、ショートカットキーをたくさん操作する方にもいいのかもしれません。例えば複雑なプログラムをボタン化したものをショートカットキー操作から実行したい場合などです。
下図の左上にいくつか配置されている「黄色い丸いボタン」のような「独自作成したプログラムボタン」の数によっては、ショートカットキーを押す数も、2/3~最大で1/2くらいに減るかもしれません。
例えば上図の黄色い丸いボタンで、「Pvt生成01」というボタンには、『ソースの表に対して自動的に、列や行が増えても再設定が不要な名前の定義をして・かつ・ピボットを2010の形式で自動作成し・かつ・表示と操作方法だけ昔のピボットと同じにし・かつ・オプション設定なども済ませたもの、が、ワンクリックで全自動で作れるプログラム(「マクロの記録」機能で生成されたプログラムをベースに作りました)』が仕込んであります。
このようなボタンをどれだけ作って、それをショートカットキー操作でどれだけ操作できるか、ということを考えるのも良いかもしれません。
ただ、新しいキー操作を覚えないといけなくなるし、クイックツールバーでもマクロ登録やショートカットキー操作はできるので、その意味で、「かえって非効率になるかも?」、と書きました。無駄、と感じられたらスルーしてください。
★ 関連記事
『「マクロ」のリボンへのメニューボタン化・関連の記事5つ』→1、2、3、4、5
『用語:ExcelやWordにおける「マクロ」とは?VBAと何が違う?(「ExcelやWord自身」は「マクロ」をどう判別・区別しているか?)Accessの場合は?』
★ ご注意
どんな不具合が出るかわからないので、あくまでも自己責任でよろしくお願いいたします。
古いメニューやボタンなので、少し、「表示はされるけど動かない」というものもあります。
基本、「不完全」です。
多分ですけど、2007の機能から完全に削除されてしまったものはダメなんだと思います。
(特にオートシェイプ系や「ツールバーの表示」系、など。)
罫線の下側の2重線のボタンも1重の線しか描画できませんでした。
ただ、逆に言うと、意外にも割と多くの数の「昔の機能」が「2010」の中には残されていた・・・とも言えるかもしれませんけど・・・。
あと、「追加」は成功しても「表示」に失敗するボタンも結構あります。
ただ、何か方法があるかもしれませんので、先生や先輩などに聞いてみてください。
すでに「郵便番号ウィザードのようなもの」の組み込み等々で、「アドイン」タブが出ている場合で、かつ、そのウィザードを一番最後(一番右側)に入れ替えたいときは、いったんウィザードを削除してから入れなおすと入れ替わるかもしれません。
基本、登録した順番に並ぶので・・・。
ただ、未検証ですし、ウィザードが使えなくなってしまうといけないので、おススメはしません。その場合は、他のExcelで試す、などをしてみてください。
★ はじめに
基本、Excel2003の「マクロの記録」機能を使ってコードを生成し、それをほとんど「まんま」で使いました。
使い勝手は結構いいです。(ってあたりまえか。これで育ってきたんですから。笑)
ただ、最近2010のリボンに少し慣れてきたので、逆に若干戸惑う面もありますが・・・。
でも、そのうちまたこちらのほうがやりやすくはなりそうです。ワンクリックも2クリックも減らせそう・・・。
お若い方で、昔のインターフェイス(メニューバー)を知らない人でも、使ってみると、意外と便利に感じてもらえるのではないかと思います。よく使う機能はいちいちタブを切り替えたり、余計なボタンを押さなくても済むので・・・。
クイックツールバーの「絵や文言が自由に変えられる版」みたいな感じで使えるのではないかと思います。
リボンのメニューほうは『 滅多に使わない最新機能の場所 』だけ覚えればいいからラクになりそうです。
うまく動かないないところは、ゆくゆくは、それも「マクロの記録」機能を利用して より具体的なVBAプログラムを作ってボタン化すればいいので、ほとんど、この「アドイン」タブだけで作業できてしまうと思います。(特に、もともと、僕は、Excelユーザーじゃないのでこれだけあれば、既にほとんどのタブはあまり使いません・・・。)
本記事のサンプルプログラムでは、消したり出したりはいつでもできます(2013や2016でも動くかどうかは未検証ですので、あくまでも自己責任でお使いください。)
ちなみにですがメニューボタンのアイコンの「絵」の差し替えについてですが、、以前テストしましたところ、絵を自由に変えられるボタンは多いことは多いですが、ただ、一応、種類が限られているようです。全部が全部、変えられるわけではないっぽいです。ただ、ニコちゃんマークのようなアイコンは全部自由に変えられます。
基本、ボタンにしたい絵(ビットマップ形式)をクリップボードに手動でコピーしてから、「PastFace」メソッドを実行するとそのクリップボードの絵が貼りついて挿し変わります。
そのほか「FaceId」プロパティで既存の絵にしたい場合は、→こちらをご参照ください。
こちら(OfficeTANAKA様)や こちら(リボンの君とSuyamaSoftさま) のWebページも。
そのほか、こちら↓もご参考に。(2007以降でしか使えない技ですが・・・。)
http://suyamasoft.blue.coocan.jp/Ribbon/ReverseResolution/get_idMso/index.html
==============
リボンの設定で、「アドイン」タブの順位を一番上に上げて、Excelを開いたときに一番最初にこのメニューが出るようにしてみました。
とってもらくちんです!(^^)
昔懐かしい、印刷ダイアログ(さっと印刷するだけなら、やっぱり便利です。)が出てくるので笑えます。(^^) また、ボタンのワンクリックでの「ダイアログ設定無しのいきなり印刷」もできました。懐かしい・・・。し、やっぱり便利・・・。
「絶対に2枚になるわけない」という印刷をすぐにできますので・・・。
もちろん、昔の余白設定のように、点線を上下左右にドラッグしてヘッダ(?)や余白を自由に設定する画面も出ます。(プレビュー画面)
なお、このアドインタブの「表示」→「ツールバー」で非表示にできるツールバーもあります。(表示→ツールバー、の中のメニューは使えないものがほとんどですが。)
余計なツールバーを消すと、今回のプログラムでは以下のようなツールバー構成となります。
これ以上(横幅に収まらないくらい)、種類が増えると、メニュー全体が左右にスクロールできるようになります。)
また、画面いっぱいにすると、下図のように割とまだ未使用部分があります。
自作のプログラムをボタン化したものも、そこそこ作れそうです。
逆に、そういうものばっかりにして使うのもいいかもしれません。
★ ツールバーを追加するコード・削除するコード
以下のコードを標準モジュールにコピペして、OrgBarAdd() プロシージャを実行すると、ツールバーが登録されます。
OrgBarDel()プロシージャを実行すると、全部削除されて、リボンから消えます。
※どんな不具合が出るかわからないので、あくまでも自己責任でよろしくお願いいたします。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 |
' ' Option Explicit '############################################################################### 'アドインタブに、よく使うアイコンを表示(自作ツールバーにて) '自作のツールバーを6個、表示させます。 '自動的に「アドイン」タブが生成され、そこにできあがります。 '(アドインタブがすでに表示されていれば、そこに表示されます。) '############################################################################### Sub OrgBarAdd() Call NewCmdAddTest01 Call NewCmdAddTest02 Call NewCmdAddTest03 Call NewCmdAddTest04 Call NewCmdAddTest05 Call NewCmdAddTest06 End Sub '############################################################################### '自作ツールバーの削除 '6つのツールバーをすべて削除します。 '追加された昔の「ファイル」→表示→ツールバーから、 '「非表示」にすることもできます。 '############################################################################### Sub OrgBarDel() Application.CommandBars("CSTMBar01_Std01").Delete Application.CommandBars("CSTMBar02_Main01").Delete Application.CommandBars("CSTMBar03_Font01").Delete Application.CommandBars("CSTMBar04_FontFilterSort01").Delete Application.CommandBars("CSTMBar05_DataOpe01").Delete Application.CommandBars("CSTMBar06_ShapeObj01").Delete End Sub '############################################################################### '1つ目のツールバーの追加 '昔の2003時代のメニューバーを「アドイン」タブに表示させます。 'ファイル→印刷、などで、懐かしい昔のダイアログが出てきて、笑えます。(^^) '############################################################################### Sub NewCmdAddTest01() Dim CmdBar01 As CommandBar Dim CmdBarCrtls01 As CommandBarControls '空の新しいメニューを作成 Set CmdBar01 = Application.CommandBars.Add() ' CmdBar01.Name = "CSTMBar01_Std01" CmdBar01.Visible = True Set CmdBarCrtls01 = CmdBar01.Controls 'Withは見づらくてあまり好きではないので、使っていません。 CmdBarCrtls01.Add Type:=msoControlPopup, ID:=30002, Before:=1 'ファイル(&F) CmdBarCrtls01.Add Type:=msoControlPopup, ID:=30003, Before:=2 '編集(&E) CmdBarCrtls01.Add Type:=msoControlPopup, ID:=30004, Before:=3 '表示 CmdBarCrtls01.Add Type:=msoControlPopup, ID:=30005, Before:=4 '挿入 CmdBarCrtls01.Add Type:=msoControlPopup, ID:=30006, Before:=5 '書式 CmdBarCrtls01.Add Type:=msoControlPopup, ID:=30007, Before:=6 'ツール CmdBarCrtls01.Add Type:=msoControlPopup, ID:=30011, Before:=7 'データ CmdBarCrtls01.Add Type:=msoControlPopup, ID:=30009, Before:=8 'ウィンドウ CmdBarCrtls01.Add Type:=msoControlButton, ID:=298, Before:=9 '整列 CmdBarCrtls01.Add Type:=msoControlButton, ID:=443, Before:=10 'ウィンドウ枠の固定(&F) End Sub '############################################################################### '2つ目のツールバーの追加 '分類しづらい、でも、わりと使うものを適当に集めました。 '############################################################################### Sub NewCmdAddTest02() Dim CmdBar01 As CommandBar Dim CmdBarCrtls01 As CommandBarControls '空の新しいメニューを作成 Set CmdBar01 = Application.CommandBars.Add() ' CmdBar01.Name = "CSTMBar02_Main01" CmdBar01.Visible = True Set CmdBarCrtls01 = CmdBar01.Controls 'Withは見づらくてあまり好きではないので、使っていません。 CmdBarCrtls01.Add ID:=108, Before:=1 '書式のコピー/??貼り付け(&F) CmdBarCrtls01.Add ID:=2521, Before:=2 'クイック印刷(&Q) CmdBarCrtls01.Add ID:=109, Before:=3 '印刷??プレビュー(&V) ' CmdBarCrtls01.Add Type:=msoControlButton, ID:=866, Before:=4 '再表示(&U)... CmdBarCrtls01.Add ID:=2950, Before:=4 '「再表示」ボタンを本ツールバーの4つ目のボタンとして追加します。「マクロ」ボタンとして追加します。 CmdBarCrtls01(4).Style = msoButtonIconAndCaption ' ボタンの表示形式を「イメージとテキスト」にする。 CmdBarCrtls01(4).Caption = "再表示(&C)" ' ボタンの「テキスト」部分を、「再表示(&C)」に変更する。「(&C)」を付けないとエラーになる。 CmdBarCrtls01(4).OnAction = "ClmnRowAllVisible01" ' ボタンを「ClmnRowAllVisible01()」プロシージャと関連付ける CmdBarCrtls01.Add Type:=msoControlComboBox, ID:=1733, Before:=5 'ズーム(&Z): CmdBarCrtls01.Add Type:=msoControlButton, ID:=444, Before:=6 '画面表示拡大(&Z) CmdBarCrtls01.Add ID:=445, Before:=7 '画面表示縮小(&Z) CmdBarCrtls01.Add Type:=msoControlButton, ID:=2034, Before:=8 '入力規則(&L)... CmdBarCrtls01.Add Type:=msoControlButton, ID:=3058, Before:=9 '条件付き書式(&D)... CmdBarCrtls01.Add Type:=msoControlButton, ID:=855, Before:=10 'セル(&E)... 'CmdBarCrtls01.Add Type:=msoControlButton, ID:=755, Before:=11 '形式を選択して貼り付け(&S)... End Sub '############################################################################### '上のプログラムの「再表示」ボタンから呼び出すプロシージャ(プログラム) '非表示設定された行と列をすべて再表示。 '############################################################################### Sub ClmnRowAllVisible01() Application.ScreenUpdating = False Application.Cells.Select '全ての列と行を選択するボタンを押す操作と同等のコード Application.Selection.EntireColumn.Hidden = False '隠れた列を表示 Application.Selection.EntireRow.Hidden = False '隠れた行を表示 Application.ActiveWorkbook.ActiveSheet.Range("A1").Select 'A1セルを選択。 Application.ScreenUpdating = True End Sub '############################################################################### '3つめのツールバーの追加 'フォント関連のものを主に集めてみました。 '############################################################################### Sub NewCmdAddTest03() Dim CmdBar01 As CommandBar Dim CmdBarCrtls01 As CommandBarControls '空の新しいメニューを作成 Set CmdBar01 = Application.CommandBars.Add() ' CmdBar01.Name = "CSTMBar03_Font01" CmdBar01.Visible = True Set CmdBarCrtls01 = CmdBar01.Controls 'Withは見づらくてあまり好きではないので、使っていません。 CmdBarCrtls01.Add Type:=msoControlComboBox, ID:=1728, Before:=1 'フォント(&F): CmdBarCrtls01.Add Type:=msoControlComboBox, ID:=1731, Before:=2 'フォント サイズ (&F): CmdBarCrtls01.Add ID:=401, Before:=3 'フォント色 CmdBarCrtls01.Add Type:=msoControlButton, ID:=113, Before:=4 '太字(&B) CmdBarCrtls01.Add Type:=msoControlButton, ID:=115, Before:=5 '下線(&U) CmdBarCrtls01.Add Type:=msoControlButton, ID:=120, Before:=6 '左揃え(&L) CmdBarCrtls01.Add Type:=msoControlButton, ID:=122, Before:=7 '中央揃え(&C) CmdBarCrtls01.Add Type:=msoControlButton, ID:=121, Before:=8 '右揃え(&R) CmdBarCrtls01.Add Type:=msoControlButton, ID:=123, Before:=9 '両端揃え(&J) CmdBarCrtls01.Add Type:=msoControlButton, ID:=405, Before:=10 '縦書きテキスト(&V) CmdBarCrtls01.Add Type:=msoControlButton, ID:=139, Before:=11 'テキスト ボックス(&X) End Sub '############################################################################### '4つ目のツールバー '罫線とフィルタ・並べ替え関連のものを集めてみました。 '############################################################################### Sub NewCmdAddTest04() Dim CmdBar01 As CommandBar Dim CmdBarCrtls01 As CommandBarControls '空の新しいメニューを作成 Set CmdBar01 = Application.CommandBars.Add() ' CmdBar01.Name = "CSTMBar04_FontFilterSort01" CmdBar01.Visible = True Set CmdBarCrtls01 = CmdBar01.Controls CmdBarCrtls01.Add Type:=msoControlButton, ID:=798, Before:=1 'セルの結合(&M) CmdBarCrtls01.Add Type:=msoControlButton, ID:=800, Before:=2 'セル結合の解除 CmdBarCrtls01.Add Type:=msoControlSplitButtonPopup, ID:=203, Before:=3 '罫線(&B) CmdBarCrtls01.Add Type:=msoControlButton, ID:=151, Before:=4 '罫線のクリア CmdBarCrtls01.Add Type:=msoControlButton, ID:=150, Before:=5 '外枠(&O) CmdBarCrtls01.Add Type:=msoControlButton, ID:=1704, Before:=6 '格子(&A) CmdBarCrtls01.Add Type:=msoControlButton, ID:=1699, Before:=7 '下二重罫線(&B) CmdBarCrtls01.Add Type:=msoControlSplitButtonPopup, ID:=203, Before:=8 '罫線ドロップダウン CmdBarCrtls01.Add Type:=msoControlButton, ID:=458, Before:=9 'オートフィルタ(&F) CmdBarCrtls01.Add Type:=msoControlButton, ID:=901, Before:=10 'フィルタ オプションの設定(&A)... CmdBarCrtls01.Add Type:=msoControlButton, ID:=210, Before:=11 '昇順で並べ替え(&A) CmdBarCrtls01.Add Type:=msoControlButton, ID:=211, Before:=12 '降順で並べ替え(&C) CmdBarCrtls01.Add Type:=msoControlButton, ID:=928, Before:=13 '並べ替え(&S)... End Sub '############################################################################### '5つめ。外部データやそれにからむものなど。 '############################################################################### Sub NewCmdAddTest05() Dim CmdBar01 As CommandBar Dim CmdBarCrtls01 As CommandBarControls '空の新しいメニューを作成 Set CmdBar01 = Application.CommandBars.Add() ' CmdBar01.Name = "CSTMBar05_DataOpe01" CmdBar01.Visible = True Set CmdBarCrtls01 = CmdBar01.Controls CmdBarCrtls01.Add Type:=msoControlPopup, ID:=30023, Before:=1 '名前(&N) CmdBarCrtls01.Add Type:=msoControlButton, ID:=1951, Before:=2 'データ範囲プロパティ(&A) CmdBarCrtls01.Add Type:=msoControlPopup, ID:=30101, Before:=3 '外部データの取り込み CmdBarCrtls01.Add Type:=msoControlButton, ID:=1952, Before:=4 'すべて更新(&A) CmdBarCrtls01.Add Type:=msoControlButton, ID:=459, Before:=5 'データの更新(&R) CmdBarCrtls01.Add Type:=msoControlButton, ID:=1950, Before:=6 'クエリの編集(&E)... CmdBarCrtls01.Add Type:=msoControlButton, ID:=2186, Before:=7 '新しいマクロの記録(&R)... CmdBarCrtls01.Add Type:=msoControlButton, ID:=548, Before:=8 'コントロール ツールボックス(&O) CmdBarCrtls01.Add Type:=msoControlButton, ID:=960, Before:=9 '再計算実行(&C) CmdBarCrtls01.Add Type:=msoControlButton, ID:=1957, Before:=10 'グラフ(&H)... End Sub '############################################################################### '6つめ。オートシェイプまわり、など。 'でもなぜか矢印がひけなかったりで、あまり使えませんでした。 '############################################################################### Sub NewCmdAddTest06() Dim CmdBar01 As CommandBar Dim CmdBarCrtls01 As CommandBarControls '空の新しいメニューを作成 Set CmdBar01 = Application.CommandBars.Add() ' CmdBar01.Name = "CSTMBar06_ShapeObj01" CmdBar01.Visible = True Set CmdBarCrtls01 = CmdBar01.Controls CmdBarCrtls01.Add Type:=msoControlButton, ID:=1119, Before:=1 '楕円(&O) CmdBarCrtls01.Add Type:=msoControlButton, ID:=1111, Before:=2 '四角形(&R) CmdBarCrtls01.Add Type:=msoControlButton, ID:=243, Before:=3 '矢印(&A) CmdBarCrtls01.Add Type:=msoControlButtonPopup, ID:=694, Before:=4 '矢印のスタイル(&A) CmdBarCrtls01.Add Type:=msoControlButtonPopup, ID:=692, Before:=5 '線のスタイル(&L) CmdBarCrtls01.Add Type:=msoControlSplitButtonPopup, ID:=1691, Before:=6 '塗りつぶしの色(&F) CmdBarCrtls01.Add Type:=msoControlSplitButtonPopup, ID:=1692, Before:=7 '線の色(&L) CmdBarCrtls01.Add Type:=msoControlButtonPopup, ID:=693, Before:=8 '実線/点線のスタイル(&D) CmdBarCrtls01.Add Type:=msoControlButton, ID:=1031, Before:=9 'ワードアート(&W)... CmdBarCrtls01.Add Type:=msoControlButton, ID:=182, Before:=10 'オブジェクトの選択(&S) CmdBarCrtls01.Add Type:=msoControlPopup, ID:=30177, Before:=11 'オートシェイプ ' CmdBarCrtls01.Add Type:=msoControlButton, ID:=732, Before:=12 'トリミング(&C) ' CmdBarCrtls01.Add Type:=msoControlButton, ID:=2827, Before:=13 '透明な色に設定(&S) ' CmdBarCrtls01.Add Type:=msoControlButton, ID:=164, Before:=14 'グループ化(&G) ' CmdBarCrtls01.Add Type:=msoControlButton, ID:=165, Before:=15 'グループ解除(&U) ' CmdBarCrtls01.Add Type:=msoControlButton, ID:=166, Before:=16 '最前面へ移動(&T) ' CmdBarCrtls01.Add Type:=msoControlButton, ID:=167, Before:=17 '最背面へ移動(&K) ' CmdBarCrtls01.Add Type:=msoControlButton, ID:=170, Before:=18 '前面へ移動(&F) ' CmdBarCrtls01.Add Type:=msoControlButton, ID:=171, Before:=19 '背面へ移動(&B) ' CmdBarCrtls01.Add Type:=msoControlButton, ID:=206, Before:=20 '頂点の編集(&E) End Sub ' ' |