マクロレコーダー

マクロレコーダーで楽勝!!

エクセルVBAもいわゆるBASIC言語なのでほかのプログラム言語同様にプログラムを記述してやる必要があります。普通人が作業している内容をプログラムに置き換えて見た場合、簡単な作業でさえ100行くらいのプログラムになってしまうのはよくあることです。

ここで登場するのがマクロレコーダーです。

マクロレコーダーとは?

エクセルの操作を手順どおりに記録してくれる優れものです。プログラムの初心者であれば自分が行った実作業をプログラムに置き換えて記述しておいてくれますし中級者以上でも、キーボードを叩く回数が減るわけですから、プログラムを作りたい目的さえはっきりしていれば強力な武器なることは間違いありません

記録方法には絶対参照相対参照があります。セル位置の参照方法の違いです。用途によって使い分けを行う必要があります。


マクロレコーダ操作(絶対参照)

まずはセル位置を移動前のセル位置と関係なく指定しそのセル対象に処理を行うものです。
とにかく、作業を記録してみましょう

クリックで拡大 【メニュー】ツール→マクロ→新しいマクロの記録を選択します。
【マクロの記録】ダイヤログボックスが表示されます。
マクロ名、ショートカットキーを割り当てるかどうか、 結果の保存先(現在開いているエクセルファイルか 新しいbookにするか)を決定できます。
ショートカットキーの割り振り以外は後で変更できます。
例ではデフォルト表示のままで[OK]を押します。
クリックで拡大 記録終了用ボタンが現れたら、準備完了です。
クリックで拡大

ここで実際に繰り返しをさせたい操作を行っていきます。
例では、 セルA1に"123"、セルB2に"abc"と記入しました。
作業が完了したら、記録終了のボタンを押します。

以上でおこなった作業が記録されています。

では、早速実際に記録されたプログラムを見てみましょう

クリックで拡大

【メニュー】ツール→マクロ→Visual Basic Editor を選択します。

クリックで拡大

Visual Basic Editorが起動します。 Range("A1").Select  セルの"A1"を選択 ActiveCell.FormulaR1C1 = "123"  そのセルに"123"と記入 Range("B2").Select  セルの"B2"を選択 ActiveCell.FormulaR1C1 = "abc"  そのセルに"abc"と記入 Range("B3").Select  セルの"B3"を選択(おまけですね) と書かれていました。

クリックで拡大

本当に動いてくれるか確認してみます。 【メニュー】ファイル→新規作成、で新しいファイルを 用意します。

クリックで拡大

【メニュー】ツール→マクロ→マクロ、を選択します

【マクロの記録】ダイヤログボックスが表示されます。 プログラムを指定して(例では1個しかありませんが) 実行ボタンを押します。

クリックで拡大

新規で作成したエクセルファイルにプログラムが実行されました。

では、今度は書かれたプログラム自体を修正して別の文字を書かせて見ましょう

クリックで拡大

【メニュー】ツール→マクロ→Visual Basic Editor を選択してVisual Basic Editorを開きます。 先ほど書いた"123"と"abc"を別の文字にかえてみましょう。 (例ではそれぞれ"456"と"def"にしてあります)

クリックで拡大

【メニュー】ツール→マクロ→マクロ、を選択します

【マクロ】ダイヤログボックスが表示されます。
プログラムを指定して実行ボタンを押します。

クリックで拡大

プログラムで指定したテキストに書き換えられていれば成功です

ページトップへ


マクロレコーダ操作(相対参照)

相対参照とはプログラム実行前のセルの位置を元にそのセルからの相対位置として作業を実行するものです。

クリックで拡大 【メニュー】ツール→マクロ→新しいマクロの記録を選択します。
【マクロの記録】ダイヤログボックスが表示されます。
マクロ名、ショートカットキーを割り当てるかどうか、 結果の保存先(現在開いているエクセルファイルか 新しいbookにするか)を決定できます。ショートカットキーの割り振り以外は後で変更できます。例ではデフォルト表示のままで[OK]を押します。
クリックで拡大 記録終了用ボタンの右側に相対参照ボタンがあります。これを押し下げてやると、以降の作業は相対参照によってマクロレコーダーは記録をしていきます。
クリックで拡大

ここで実際に繰り返しをさせたい操作を行って いきます。
例では、 セルA1に"789"、セルB2に"ghi"と記入しました。
作業が完了したら、記録終了のボタンを押します。

以上でおこなった作業が記録されています。

速実際に記録されたプログラムを確認してみます。

クリックで拡大

【メニュー】ツール→マクロ→Visual Basic Editor を選択します。

クリックで拡大 Visual Basic Editorが起動します。 ActiveCell.FormulaR1C1 = "789" 現在のセル位置に"789"と記入 ActiveCell.Offset(1, 1).Range("A1").Select 現在のセル位置から右へ1つ左へ1つ移動したセル1マスに移動 ActiveCell.FormulaR1C1 = "ghi" 現在のセル位置に"ghi"と記入 ActiveCell.Offset(1, 1).Range("A1").Select 現在のセル位置から右へ1つ左へ1つ移動したセル1マスに移動 と書かれていました。 ちょうど上側に絶対参照で使った"Macro1"のプログラムがあるので見比べていただくと違いがよくわかると思います
クリックで拡大 では、動作を確認してみましょう
【メニュー】ツール→マクロ→マクロ、を選択します
【マクロ】ダイヤログボックスが表示されます。
プログラムを指定して実行ボタンを押します。
クリックで拡大 シートを確認すると、実行直前に"C1"を選択していたので、まずそのままの位置に"789"と記入し、右に1つ左に1つ移動し"ghi"を記入、その後また、右に1つ左に1つ移動しプログラムが終了しているのがわかります。 プログラムを繰り返し実行すると位置をずらしながら繰り返した分だけ書き込まれていくのがわかるかと思います。(例ではきりが無いので一回だけにしておきます)

ページトップへ


"マクロ"という呼び名について

このページのタイトルにもあるようにエクセルはVer.5からVBA(Visual Basic for Aplication)という形で、実装されるようになりました。それ以前にはエクセルマクロという形で独自のマクロ言語が実装されていました。そのころの名残りが今でもマクロといわれる理由のようです。 Ver.4以前のマクロプログラム自体も大変優れていて、現在と遜色ないマクロレコーダーが実装さていました。Lotas1-2-3と覇権を争っていた当時、このマクロレコーダーの性能の違いが、エクセルを勝利に導いたとも言われたほどでした。またビ●ゲ●ツが Lotas1-2-3に対抗するために探していた表計算ソフトでこのマクロレコーダー機能が優れていたためにエクセルを買収したとの逸話もあるほどです。ワードやアクセスにもVBAが 実装されているにもかかわらず、マクロレコーダーは実装されていません。逸話の信憑性はともかく、もっとも同社に利益をもたらしたソフトの一つであるにもかかわらずもっとも同社らしくない機能を持っているエクセルの名残りなのかも知れません。

ページトップへ