ExcelのマクロとVBAの違い【初心者向け解説】

  • このエントリーをはてなブックマークに追加
  • LINEで送る

日々業務でExcelを使用している方は多いでしょう。

Excelでの作業は単純作業が多く退屈で、またどうしてもミスも発生してしまう、と感じられているかもしれません。

そこで単純作業を自動化し、ミスをなくすツールがマクロとVBAです。マクロとVBAを使用すれば時間と労力を削減しつつ、さらにミスもゼロにできます。

マクロとは?VBAとは?

まずマクロとは、アプリケーションソフトの操作手順を設定し、必要なときに実行できる機能のことです。そしてExcelにもマクロ機能が用意されています。Excelのマクロは知名度があり使用されることも多いため、マクロと言えばExcelのマクロを指す場合が多いでしょう。

一方で、VBAはVisual Basic for Applicationsの略で、Microsoft Officeのアプリケーション上で使用できるプログラミング言語です。ExcelのVBAが最も知名度が高いと考えられますが、PowerPointなど別のアプリケーションでも使用されています。

VBAはVBというプログラミングをベースに作られました。VBはWindows環境に特化したプログラミング言語で、VBAはそこからさらにMicrosoft Officeのアプリケーションに特化したということです。VBAはアプリケーションにもともと用意されている機能を利用しながら実装していくので、VBよりも扱いやすいのが特徴です。

マクロとVBAの違いと関係

マクロは操作手順を自動化するための設定、VBAはアプリケーション上で使用するプログラミング言語です。マクロとVBAは混同されることが多いですが、別物なのです。

しかし、マクロとVBAには密接な関係があります。なぜなら、VBAでマクロを作ることができるからです。VBAでプログラミングをして処理を作り、その処理をマクロという形で保存することができます。

ある程度複雑なマクロを作りたい場合は特に、VBAを使用するのが一般的です。逆に言えば、単純なマクロであればVBAなしでも作成できます。Excelに用意されている「マクロの記録」という機能を使用すれば、VBAなしで簡単にマクロを作成可能です。

マクロの記録では、実際に操作した内容を記録し、次からは操作を自動で実行する、という使い方ができます。マクロの記録の裏側では、操作した内容がVBAによりプログラミングされているのですが、人間がVBAを書く必要はありません。

マクロでできることと制約

ここでは、「マクロの記録」でできることとできないことを紹介します。マクロ自体にできることは、VBAでできることと同じです。VBAで書いたコードをそのままマクロにできるからです。

マクロでできること

マクロでできることは、単純な操作記録です。具体的には、位置の記録、範囲の狭い処理、簡単な定型作業などが挙げられます。

マクロでできないこと

単純な操作記録ならマクロの記録で問題ありませんが、処理が多くなるとマクロの記録だとかえって処理を作るのが難しくなったり、うまく記録できたと思っても動かしてみると誤作動が起こったりします。

まずマクロの記録中は操作がすべて記録されるため、途中で誤った操作をするとそのまま記録され、実行時には誤った操作まで実行されます。他にも、ループや条件分岐といったプログラミングの基本処理もマクロの記録では作れません。

VBAでできることと制約

次にVBAでできることとできないことです。

VBAでできること

VBAでできることは、データ集計の自動化、メールの一括送信、Microsoft Officeアプリケーション間の連携などです。マクロの記録に比べると、複雑な処理や手動でできない処理も実装できます。

またExcelなどのアプリケーション内だけでなく、メールソフトやPowerPointなどとも連携できます。定型のメールを一括で自動送信したり、Accessからデータを読み込んでExcelでグラフ化するようなことも可能です。

VBAでできないこと

VBAでできないことは、膨大なデータ処理、Microsoft Office以外のアプリケーションとの連携、アプリケーション開発などです。VBAの処理能力はそこまで高くないため、データ量が多すぎると処理に時間がかかってしまいます。処理できないというわけではありませんが、マクロボタンを押してから処理完了まで何分もかかってしまう可能性があるでしょう。

Microsoft Office以外との連携もできません。なぜならMicrosoft Office以外のアプリケーションを認識するコードが用意されていないためです。VBAはあくまでもMicrosoft Officeアプリケーション内で使用することを想定しているため、他のプログラミング言語のようにゼロからアプリケーション開発をするのには不向きです。

まとめ

ExcelのマクロとVBAは、どちらもExcel業務を効率化するための手段です。簡易的な処理の自動化であればマクロの記録で問題ありません。ある程度複雑な処理や繰り返し処理を自動化する場合は、VBAが必要になります。

またマクロの記録で処理を作り、そこからVBAを書き替えるような使い方も可能です。たとえばマクロの記録で操作して処理を作り、VBAを書き替えて繰り返し処理にする、といった使い方が分かりやすいでしょう。

このようにマクロの記録とVBAはどちらも扱えた方が利便性が高いです。まずはマクロの記録から試してみて、徐々にVBAの練習をしていくのがおすすめです。