オートマクロとは、マクロの自動生成のことです。一連の作業をマクロに記録していき、出来上がったマクロを実行して、作業を自動化するものです。自動生成されるマクロは、必ずしも効率的ではありませんが、マクロ言語の勉強にもなり、マクロを使っていこうと思う人の、入門用の教科書でもあり、またベテランにとってもVBA言語のマニュアル的存在です。
1.使い方の基礎は、記録開始と終了ボタンの操作。
オートマクロの記録は、ツール・マクロ・新しいマクロの記録をクリックしてスタートします。
![]() |
![]()
|
この時点で、OKをクリックすると、マクロが記録され始めます。テープレコーダーのマイクのように、行った操作がすべて記録されます。どこかで終了しないと、記録は終わりません。終了を指示するものが、記録終了ボタンです。
記録終了用のボタンが見当たらない場合は、表示・ツールバーを開き、記録終了にチェックを入れ、このボタンを表示しとておきます。このボタンが無く、記録が終了できないと、マクロが記録され続け、重大なトラブルになります。
![]()
終了ボタンの左の■をクリックして、いったん終了させてください。過って、このボタンを×をクリックして非表示にしてしまったときは、表示メニューから表示させてください。
2.生成されたマクロを表示する・実行する。
先の、ツール・マクロのメニューから、マクロを開きます。編集をクリックすると、VisualBasicの編集ウインドウが開きます。
左の「標準モジュール」の+をクリックして開き、Module1をWクリックすると、右側に内容が表示されます。

または、表示メニューでVisualBasicにチェックを入れておくと、図のようなツールバーが表示され、矢印のボタンで編集画面が出ます。
![]()
3.オートマクロで記述されたVBA言語によるプログラム
マクロは、Sub マクロ名() *ここではMacro1という名前が自動で付いている
と、End Sub の間に記述されます。’から始まる部分は、コメントでプログラムとして実行されません。
上の例では、
Range("L23").Select
Application.ComandBars("Stop Recording").Visible = False
Application.ComandBars("Stop Recording").Visible = True
という3行が中身です。それぞれ翻訳すると、L23と言うセルを選択・表示・ツールバーの「記録停止」を非表示に、同じく表示にというものです。これは、このマクロをサンプルで記録したときに、いったんボタンを非表示にし、その後でまた表示にしたら、その操作がそのまま記録されたものです。
言語は英語ですが、意味を見るとなんとなく理解できます。しかし、これを記述するのは、文法や用語を覚えていないと書けませんね。そこで、オートマクロを使って、こんなときはこのように記述するのか、と勉強するわけです。実際には、不要な記述も加えられ、無駄な操作もそのままマクロに書かれてしまいます。勉強していくうちに、オートマクロで生成されたものを、修正して使えるようになります。オートマクロは、VBA言語の教師なのです。 いきなりVBAの参考書を買って読んでもちんぷんかんぷんのはずです。オートマクロで生成される記述を、何となく読んでいるうちに、分かるようになります。ただし、英語の単語が分からない場合は、辞書を使ってください。英語が分かれば、意味はそのままです。
Application.ComandBars("Stop Recording").Visible = False などは、直訳すると
ソフトのメニューバー(記録停止)の可視性=なし 「ツールバーを消す」です。4.マクロを作るときのポイントは、「相対座標」「絶対座標」の理解
例えば、セルA1からE1の5つを選択し、これをコピーしてセルA5から貼り付ける、というマクロを作って見ましょう。
ツール・マクロ・新しいマクロの記録 で、スタートします。記録終了ボタンを消さないように、作業をしていきます。このとき、まちがえたことはそのまま記録されます。範囲の選択などは、SHIFTを押しながらカーソルキィでやった方が確実です。「絶対座標」 座標をそのまま指定すること
![]() |
![]() |
![]() |
![]()
これで生成されたマクロは、基本的にはこの4行です。直訳すると |
このマクロが、絶対座標で記録されたものです。このマクロを実行すると、コピーするのは、A1からE1に固定されており、貼り付ける場所もA5に決められています。マクロの中で座標がそのように直接記述されているからです。マクロを造って使いたい操作は、繰り返し場所を変えて実行したい場合があり、むしろそのような場合の方が多いのです。そういう場合には、座標の記述を「相対座標」に切り替えます。それが、記録終了ツールバーの右側のボタンです。
「相対座標」 現在のカーソル位置を基準に、上下左右にどれだけオフセットするかで座標を指定します。
切り替えは、
をクリックし、
←この状態が相対座標、 もう一度クリックすると、
で、絶対座標に戻ります。しかし、バージョンによっては、このボタンがどちらの常態か分かりにくいことがあります。クリックで切り替わりますが、何度も押すうちに分からなくなってしまったり、切り替え忘れをしたりしてしまうので、慣れが必要です。オートマクロをマスターするポイントでもあります。
例の2番目として、先ほどの操作を、相対座標を指定してマクロを作って見ます。作業のスタートに、切り替えボタンをクリックするだけです。ただし、記録前にカーソルをA1に置いてスタートします。

1行目に、Activecell. が追加され、4行目に Activecell.Offsett. が追加されています。これが、相対座標指定の形式です。相対座標指定では、常に現在位置をA1と考えます。そこから、オフセット(4行下、0列右)に移動したところに貼り付けます。
カーソルをA1に置いてマクロを実行すると、そこから5つ右までセルを選択し、4行下に移動した位置(A5)に貼り付けます。また、カーソルをA2に置いて実行すれば、A2:E2を選択し、A6から貼り付けます。相対・絶対指定の書き方が分かれば、後からその部分を書き直すこともできます。ボタンのクリックし忘れなどでも、自分で書き直せばいいのです。5.オートマクロの使いこなし 編集して改良する
(1).途中の操作を表示させない
オートマクロで作ったマクロは、マウスの選択操作などがそのまま表示されるので、スピードが遅くなります。途中の表示を止めて、結果だけ表示すると、スパッと動く快適なものになります。そのためには、出来上がったマクロを、以下の2行で挟みます。Application.ScreenUpdating = false
この中に生成されたマクロを置くと、画面を書き換えないので、動作が速くなります
Application.ScreenUpdating = true(2).2行を1行にまとめる
これは、少し分かってきたらやってみてください。オートマクロでは、範囲選択し手からしかコピーできませんが、実際の命令は、「ここをコピーする」という1行の指定でできます。実際にその方が速いのです。Range("A1:F1").Select
Selection.Copy は、Range("A1:F1").Copy という1行にまとめられます。
.Selectは、を選択 ですが、Selection.は同じ意味なので、いきなり .Copy (を、コピー)でも良いのです。6.オートマクロで、特殊な操作の記述を知る
印刷の指定や、書式の設定、ファイルの保存など、殆どすべての操作にマクロ命令が用意されています。オートマクロでどのように記述されたかを見ると、自分で作るマクロの記述がわかります。自分で作るマクロは、オートマクロでできたものをコピー貼り付けでつないでいって完成させるのです。奥は深いですが、こうした勉強法でオリジナルマクロが作れるようになります。