皆様、こんにちは。Mと申します。
早速ですが皆様は「Excel VBA」という言葉を聞いたことがありますでしょうか?知ってるよ!って方も初耳の方もいらっしゃるでしょう。
Excel VBAとは「Excel Visual Basic for Application」の略です。VBA、とだけで呼ばれることがほとんどですので、ここから先は「VBA」と呼ばせていただきます。
VBAのことを少し詳しく説明すると、Microsoft Office製品に搭載されているプログラミング言語のことで、Word、Excel、PowerPointなどのソフトウェア上でプログラムを作成・実行することで、それらソフトウェアの機能を拡張したり操作を自動化させたりすることができます。
ここまで話すと「マクロとは何が違うの?」と思うかと思います。VBAはプログラミング言語であるのに対して、マクロは機能です。マクロを作成するためには、アプリケーションごとに異なるプログラミング言語を使用します。そしてOfficeアプリケーションであるExcelのマクロ機能を使うために、必要になるプログラミング言語というのがVBAなのです。そのため両者は同じものとして混同される場合が多くありますが、厳密には異なるものです。
何が何やらですね…マクロは動作を記録し、記録した動作を再生できる機能、VBAは思い通りに操作したいものを記述し、実際に動かすためのプログラミング、です(かなりふんわりですが)
マクロでセルA1の文字を赤色に変えるという動作を記録してみたとしましょう。開発タブのVBE(Visual Basic Editor)からのぞくとそこには全く関係ないフォントサイズなども記述されているのです(あくまでも例ですが)
そこで便利なのがVBAです。セルA1も文字を赤にするとき、同じフォルダに入っているブック全てのA1の文字を赤にするとなればVBAの方が断然早くなるのです。マクロの場合はブックを開いて一つずつマクロを実行しなければなりませんが、VBAはフォルダを開いてそこに入っているブック全てのセルA1の文字を赤にする、という動作を記述すればわざわざブックを開かずとも一つのプロシージャ(命令文を一つにまとめたものの単位)を実行してしまえば勝手にセルA1の文字は赤くなってくれます。ここがマクロとVBAの違いと利点になります。
一つのブックしかなければ断然マクロの方が早いですし、VBAのように自分で記述しないのでエラーも起きません。しかし、膨大なデータ量である場合1回プロシージャを記述し実行してしまえば全てのブックを開かずとも操作できるVBAに利点があるといえるのです。
最初のうちは記述してもエラーが起きてしまい、結局1つずつ処理する方が早いかもしれません。それでもコツコツ勉強して思うようなプロシージャが記述できるようになったら1つずつ処理していたマクロとはまた違う便利さに気づけるかと思います。
Mは職業訓練で基礎をかじった程度ですので、まだ活用できるほどの実力はありませんが、少しずつ勉強してちょちょいのちょいだぜ!…と記述できるように頑張ります!