オートマクロを使う

メニューへもどる


  オートマクロとは、マクロの自動生成のことです。一連の作業をマクロに記録していき、出来上がったマクロを実行して、作業を自動化するものです。自動生成されるマクロは、必ずしも効率的ではありませんが、マクロ言語の勉強にもなり、マクロを使っていこうと思う人の、入門用の教科書でもあり、またベテランにとっても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を選択
そのシートに貼り付け
という意味です。

このマクロが、絶対座標で記録されたものです。このマクロを実行すると、コピーするのは、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.オートマクロで、特殊な操作の記述を知る

印刷の指定や、書式の設定、ファイルの保存など、殆どすべての操作にマクロ命令が用意されています。オートマクロでどのように記述されたかを見ると、自分で作るマクロの記述がわかります。自分で作るマクロは、オートマクロでできたものをコピー貼り付けでつないでいって完成させるのです。奥は深いですが、こうした勉強法でオリジナルマクロが作れるようになります。 


メニューへもどる