「マクロの記録」を使ってみる

「マクロの記録」を使ってみる

Exceの作業を自動化する場合、VBAでプログラムを作成する方もいますが、「マクロの記録」を使って自動化を目指す方法があるのはご存知でしょうか。

「ここはVBAのプログラム講座なので別のやり方は関係ないのでは?」

と感じてしまう方もいらっしゃるかもしれませんが、実はそうとも言い切れないんです。

この「マクロの記録」を使った作業の自動化のやり方を知っておくとVBAのプログラムを作成する上で非常に有利に働きます。

世の中のVBAプログラマーのほとんどは「マクロの記録」のことを十分に理解した上で実践の場でその知識を活かして有利に作業に取り組んでいます。

「マクロの記録」について正しい知識と活かし方をしっかり習得して頂いてVBAの使い手としてのスキルを高めていきましょう。


「マクロ」って何?

「マクロ」ってそもそも何なのかって観点からの解説になります。

マクロが理解できていないとその先の話に進めないですよね。

「え?マクロってVBAのことでしょ?」

と思われている方が世の中には非常に多いんですが、はっきり申し上げるならばその考え方は微妙です。

なぜならマクロはOffice製品で有名ですが、実はマクロという言葉そのものはOffice製品だけの専用用語ではないからです。

その時点でマクロとVBAは同じという関係式が成り立たなくなってしまいますよね。

なぜならVBAはOffice製品上で動作するプログラミング言語であるから。

ではマクロっていったい何を指していると思いますか?

「マクロはアプリケーション操作の自動化、またはその処理のこと」

MicrosoftのOffice製品としてのマクロもマクロ機能としてOffice製品の操作の自動化をサポートする機能として組み込まれています。

「マクロの記録」の使ってみる

今回はExcelのマクロレコーダーを使って簡単な作業をマクロとして記録してみましょう。

このようなシートがあったとしましょう。

A列:姓とB列:名を連結させてC列:氏名を作る作業をマクロの記録を使って自動化してみましょう。

  1. [関数] タブの [マクロの記録] をクリックします。
  2. 起動するマクロの登録フォームにマクロ名と説明を記述する。
  3. [実行]ボタンを押下する。
  4. セル[C2]に連結する式を入力する。
  5. セル[C2]をコピーする。
  6. セル[C2:C8]を選択し、数式を貼り付ける。
  7. [関数] タブの [記録終了] をクリックします。

マクロの記録作業は以上になります。

マクロを実行する

では記録したマクロを実行してみましょう。

事前にC列の氏名はクリアしておきましょう。

  1. [関数] タブの [マクロ] をクリックします。
  2. 起動したマクロの実行フォームから実行するマクロを選択します。
  3. [実行]ボタンを押下します。

マクロの実行で気になったところ

実際にマクロを記録してみて、その記録したマクロをうまく実行させることができましたでしょうか。

マクロに記録した作業は何を記録したいのかでいろいろ変わっていきますが、マクロの記録から実行までの基本的な流れは以上になります。

何か変な気持ちになりませんか?どこか腑に落ちないような。

その感覚は正しいです。

これまで簡単なVBAのプログラムを作って実行してみたり、今回は簡単なマクロを作って実行してみたりしてみましたが、どちらを実行したときも手順が同じなんです。

いずれもマクロの実行フォームから実行して処理が開始された点が同じなんです。

「え?じゃあVBAは結局マクロってこと?」

とそういう考え方につながってしまうわけですよね。

ここで衝撃の事実をお見せしたいと思います。

VBEを起動してください。やり方は以下のいずれかです。

  • Alt + F11
  • [開発]タブの[Visual Basic]をクリックする。

プロジェクトエクスプローラを見ると、標準モジュールにModule1が追加されていて、さらにコードウィンドウにマクロ作成時にマクロに名付けた名前のプロシージャが記述されていることが確認できます。

VBAのプログラムを作成してないのにマクロを作ったらVBAのプログラムが作られた。

マクロとVBAプログラムの実行方法も同じだった。

「え?じゃあやっぱりVBAは結局マクロってこと?」

混乱しちゃいますよね。気持ちはわかります。

正しい解釈は「マクロの中身はVBA」でいいと思います。

マクロレコーダーは記録中のアプリケーションの作業をVBAのプログラミング言語で記録しているわけです。

だから記録されたマクロの中身はVBAで作られたプロシージャとなるわけです。

VBAで開発ができるのはOffice製品にマクロ機能がサポートされているから。

マクロ機能としてはマクロレコーダー以外にも、VBAの実行や編集、VBEなどの統合開発環境も含めてマクロ機能と呼んでいます。

そのため意味合いは異なりますが、マクロ機能で作ったマクロならばVBAのプロシージャと同じものを指していると表現してもいいかもしれません。

まとめ

「マクロの記録を使ってみる」について解説させて頂きましたが、いかがでしたでしょうか。

混乱させてしまいましたかね?

しかし今回の話は悪いことばかりではなく、良い側面があります。

作成されたマクロの実体がVBAのプログラムであるということは、VBAでプログラムを開発しているときに、実現したい処理をVBAでどのように表現・記述してよいのか分からなくなったときに非常に役立ちます。

マクロの記録で作業をマクロに記録すればいいわけです。

するとVBE上にはVBAのプロシージャが自動作成されるわけですから、記述に悩んでいたVBAの表現方法をそのプロシージャから抜き出せるわけです。

VBAの開発も慣れてくればそのような手法を活用することなく開発作業に取り組めますが、そうでない場合には作業効率の向上に非常に貢献してくれます。

そのような経緯からプログラミング言語習得への近道としても一役買ってくれるわけですね。

うまく活用してVBAのスキルを高めていきましょう。