マクロとは
マクロとは、自動実行プログラムのことを言います。
Excelに限らず、他のOfficeアプリケーションのWordやAccessやOutlookなどにもマクロがあります。
毎日行う作業や手作業だと時間がかかる作業をマクロ(自動実行プログラム)として作成し、ボタンやクイックアクセスツールバーに登録すると、ボタンなどをクリックするだけで今まで時間がかかっていた作業を実行することができます。
Excelは事務作業や設計書作成や統計作業など、ある程度決まったルールの中で同じことの繰り返し行うことが多々あります。
これをボタン1回押すだけになるのであれば、生産性の向上に大きく寄与します。
マクロの作成方法は2つ
マクロを作成するには2つの方法があります。
1つは「マクロの記録」機能を使う方法で、もう1つは「VBA」というプログラミング言語で作成する方法です。
VBAはVisual Basic for Applicationという正式名称がついてますが、私もVBA(ブイ・ビー・エー)という言い方しかしませんし、正式名称もこれを書くときに調べたぐらいで他では使ったことがありません。
VBAはプログラミング言語のためソースコードを書くことになります。
その際に「関数」という単位でプログラムを作成するのですが、作成した「関数」をマクロということになります。
逆に言えば、マクロの実体はVBAで作成した関数、ということになります。
マクロの記録機能とは
マクロの記録機能はExcelで操作した内容をVBAのソースコードとして作成する機能のことです。
すべての操作を記録することはできませんが、かなりの部分を記録するため自分でプログラミングする際の手助けになります。
私もマクロの記録機能を使って必要な部分だけを使うなどで活用しています。
マクロの記録機能を使って作った部分は全部残す必要はなく、いらない部分は削除して構いません。
いるかいらないかの判定については別ページで詳しく書きます。
VBAのプログラミングとは
VBAはプログラミング言語の1つです。
プログラミング言語にはC言語やJava言語など複数ありますが、それらの中でも簡単な部類になります。
他の言語の場合は記述方法が難解だったり開発環境の構築が大変だったりしますが、VBAはExcelさえインストールされていれば利用できますしプログラミング言語としての難易度も他の言語と比べるととても易しいです。
ただし初めてプログラムを作る場合は知らないことだらけのためそれなりに苦労はすると思います。
VBAの場合は手でプログラムを作成するだけでなく、マクロの記録機能がありますので、「どうやって書いたらいいんだろう?」という時にマクロの記録機能を使って書き方を知ることが出来ます。
これは他のプログラミング言語では出来ない優位点です。
他のプログラミング言語であればネットや書籍で調べるしかありませんが、VBAはVBA自身のマクロの記録機能が教えてくれるというとてつもない恩恵があります。
ただ、マクロの記録機能にも限界があり、複雑なことをやりたい場合にはどうしても自分でプログラムを書く必要があります。
マクロが持つ機能
マクロは自動実行ですが、Excelの自動実行だけでなく、Excel以外のアプリケーションの操作やWindowsの機能すらも処理できる場合があります。
マクロを作る際のVBAですが、一般的なプログラミング言語と同様に、いろんな条件に応じて処理を変更することができたり、繰り返し処理を行うことができたり、テキストファイルの読み書きやファイルの作成や削除などができたりします。
また、マクロ用の画面を作ることができます。
これをフォームと言います。
他にはWindows APIや.NET Frameworkを使ってWindowsの複雑な操作を行うことができます。
Windows APIを使う際には特殊なコードを書く必要があります。
ここまでくると初心者の方が見て面食らうようなプログラムになってきます。
このブログでもたまにWindows APIを使ったマクロを紹介しています。
マクロを使ってできないこと
実は、マクロを使ってできないことを挙げる方が難しいぐらい、マクロは多くのことができます。
これは出来ないだろう、と思っていたら、WindowsAPIや.NET Frameworkを使うと出来る、なんてことがあったりします。
一つ出来ないことを挙げるとすると、他アプリケーションのイベントをフックすることは(おそらく)出来ません。
これは他のアプリケーションの動作を横取りする機能なのですが、一般的には使うことはまずないと思いますし、私ももしVBAにフック機能があったとしても本当にフックが必要ならばC言語で書くと思います。
マクロを使う方法
マクロを使うには開発タブを表示させる必要があります。
- 「ファイル」タブをクリックします。(Excel2007の場合はOfficeボタンになります)
- 「オプション」をクリックします。(Excel2007の場合は「Excelのオプション」になります)
- 「リボンのユーザー設定」をクリックします。(Excel2007の場合は「基本設定」をクリックします)
- 「開発」のチェックを付けます。(Excel2007の場合は「[開発]タブをリボンに表示する」にチェックを付けます)
- 「OK」を押して閉じます。
- 「開発」タブが表示されます。
開発タブは表示されたでしょうか?
実際のマクロ作成については別ページで紹介します。