VBAとマクロの違いについて具体的かつ合理的に解説|本音中辛

公開日:2019年11月4日

VBAとマクロの違い

VBA(Visual Basic for Applications)とはマイクロソフト社が開発したExcelやAccessに特化したプログラミング言語です。

このVBAと同じような意味で使われる言葉に「マクロ」がありますが、異なる意味合いで使われることもあり、混乱する場合もあります。

そこで今回はVBAとマクロの違いについて具体的かつ合理的に解説します(本音中辛)。

1.VBAとは

冒頭で少し解説しましたが、マイクロソフト社が開発したプログラミング言語の1つに「VB(Visual Basic)」というものがあります。

このVBをベースとしてExcelやAccessといったOffice製品専用に少しだけ変えたプログラミング言語が「VBA(Visual Basic for Applications)」です。

正式名称の「Applications」とはOffice製品を意味し、「Office製品のためのVB」ということです。

従ってOffice製品であれば、ExcelやAccessだけに限らずWordやPowerpoint,OutlookなどのVBAツールも開発できます。

人間に例えるとVBAはVBの子供のような存在と考えると分かりやすいと思います。

VBというプログラミング言語はVBA以外にも親戚が存在し、VB.NetやVBSがあります。

文法的にはほとんど同じであることから、VBAを習得すればVB.NetやVBSは他のプログラミング言語の習得よりも簡単にマスターできます。

1-1.VBAの使い方

「VBAを使う」とは、「VBAというプログラミング言語を使って、ExcelやAccessファイル内にコードを記述する」ということを意味します。

VBAはExcelやAccessファイル内の「VBE(Visual Basic Editor)」という場所を開いてコードを記述することで、ExcelやAccessのツールを開発します。

このVBEは「開発」タブをクリックすると開くのですが、通常のExcelの状態ではファイル上に開発タブは表示されていません。従って、まずは開発タブを表示させる必要があります。

表示方法ですが、Excelを開き、上に表示されたタブより左上の「ファイル」をクリックし、「オプション」をクリック。

「リボンのユーザー設定」をクリック

右側に表示させるタブの一覧が表示されるため、「開発」を探してチェックを入れる。

以上の操作でファイル上部に開発タブが表示されます。

これで開発タブをクリックすればVBEが開き、VBAプログラミングを行うことができます。

2.マクロとは

マクロ(Macro)とは、コンピューターを制御するためにプログラムされた機能の総称をいいます。

以上からマクロという言葉はVBAだけでなく、コンピューター全体で使われる言葉です。

VBAに限定してマクロを説明すると、「ExcelやAccessといったOffice製品を操作するための便利な機能」です。

「操作」という言葉は、人ではなくコンピュータが自動的に行ってくれるプログラムをいいます。

Excelで具体的に例を挙げると、次の機能はマクロです。

  • ・SUMやIFといった関数
  • ・文字書式や罫線、色などの設定
  • ・コピー&ペースト
  • ・並び替えやデータ抽出のフィルター機能
  • ・グラフやピボットテーブル作成機能

他にも様々なマクロがExcelに搭載されています。

2-1.VBAに限定した場合のマクロとは

VBAの話に限定して「マクロ」という言葉が「正しく」使われた場合には、次の3通りが考えられます。

  • (1)VBAプログラミングによって作られた機能
  • (2)Excelの「マクロ」機能によって記録されたVBAプログラミングで作られた機能
  • (3)Accessの「マクロ」機能によって記録されたVBAプログラミングで作られた機能

(1)は上述で説明したVBEを開いて、プログラマーなど人手でプログラミング言語であるVBAを使ってコードを記述して作った機能のことをマクロといいます。

(2)(3)はそれぞれExcel,Access上の「マクロ」という機能を使って、人手でVBAコードを記述するのではなく、人手で操作を行い、または設定を行うだけで、ExcelやAccessが自動的にVBAコードを記述してVBAプログラムを作ってくれる場合に使うマクロの意味です。

2-2.Excel上のマクロ機能の使い方

上述(2)のマクロを使う場合には、Excelファイルを開き、上部のタブより「表示」タブをクリック。

右端に表示される「マクロ」をクリック

「マクロの記録」をクリックすると、マクロの記録ダイアログが表示されるため、マクロ名を入力してOKボタンをクリック。

マクロの記録が開始しますので、自動化したい操作を人手で操作します。

自動化したい操作が完了したらば「記録終了」をクリックしてマクロの記録を終了させます。

作成したマクロを実行させる場合は、マクロを実行させるボタンを作っておきます。ボタンをクリックすれば記録したマクロプログラムを実行できます。

2-3.Access上のマクロ機能の使い方

上述(3)のマクロを使う場合には、Accessファイルを開き、上部のタブより「作成」タブをクリック。

右端に表示される「マクロ」をクリック。

自動化したい操作を人手で設定した後に作成したマクロプログラムを作成して保存。

作成したマクロを実行するために、ボタンを作っておけばボタンをクリックしてマクロプログラムを実行できます。

VBAとマクロの使い方|正しい文例と間違った文例

いくつかの文例を挙げて正しいVBAとマクロの言葉の使い方を解説します。

3-1.「VBAでExcelマクロを作って」

正しい文例。

VBAというプログラミング言語でExcel上にマクロプログラムを作るという意味で用いているので、上述の(1)の意味でマクロを用いています。

3-2.「Excel上の〇〇の操作をマクロで作って」

正しいが言われた側としては少し戸惑う文例

なぜならばマクロを上述(1)と(2)の両方の意味で捉えることができるからです。

すなわち、VBAコードを記述してマクロプログラムを作るのか、Excelのマクロ機能を使って、マクロ記録を行って自動的にVBAプログラムを書いてもらうのか、という両方の意味で「マクロ」という言葉を解釈できるということ。

会話者がプログラミングに詳しくなくExcelのマクロ機能しか知らない人であれば、(2)ですが、本来のマクロの意味を知っているプログラミングに詳しい人で、サラッと伝えてきた場合には(1)の意味で使っているということも考えられます。

本来は会話者が(1)と(2)の意味を明確にするように話すべきですが、これを聞いた者の対応は次の2通りが挙げられます。

  • (その1)→会話者のITスキル、これまでの依頼内容、〇〇の操作のプログラム難易度、現場の空気から(1)なのか(2)なのかを判断する。
  • (その2)→VBAでコード記述すればよいのか、Excelマクロ機能でコード記録すればよいのか質問する。

(その1)の方が大人の対応と思いますが、作って提出した際に間違ったマクロの解釈をしていると怒られる可能性があります。

(その2)であれば、こちらは間違った対応ではありません。しかし、会話者が子供のような方であり、かつプログラミングに詳しくない人であれば機嫌を損ねてしまう可能性が高いです。

一方でプログラミングに詳しい方の場合には、「そんなことも分からないのか?」といった空気で上から(1)の意味に決まっている、といった感じでマウント風な空気になり、評価を下げられてしまう可能性もあります。

どちらの対応にしてもこちらは悪くないと思うのですが、損をする可能性がありますし、ストレスも溜まる、そんな文例です。

3-3.「Access上の〇〇の操作をマクロで作って」

この文例も悩みます。

上述3-2と異なり、Accessマクロ機能はあまり知られていない機能であるため、Accessに詳しい人はAccessのマクロ機能(上述(3))を知っているかどうか、こちらのスキルを値踏みしている可能性があります。

一方でAccessに詳しくない人であれば(1)の意味で「VBAコードを書いてツール作ってくれる?」という意味で話している可能性もあります。

若しくはExcelと同じように「Accessにもマクロによる操作記録機能がある」と勘違いされている方もいます(Accessマクロ機能はExcel上のマクロ機能のように記録機能はありません。人手による設定で自動化を可能にする機能です)。

3-2と同様、会話者を不機嫌にさせる可能性がある文例であり、開発者は気を遣う局面です。

3-4.「マクロってオモチャみたいだよな」

完全に間違った使い方。というか悪口でしかない。

私は同様の会話を一度ならず複数の現場で聞いたことがあります。

上述(1)から(3)のどの意味で使っているかどうかというよりも、VBAというプログラミング言語を小馬鹿にした、軽くみている言い方。

完全にVBAツール開発を快く思っていない発言です。というか単なる悪口。

残念ながらそのような場合にも「VBA」ではなく「マクロ」という言葉を使います。

「Excelツールって、プログラミング言語のVBAで手書きではなく、記録すれば作れるんでしょ」といった意味でVBAプログラミングの評価を下げるような発言です。

このような発言があった場合には次の通りに考えましょう。

現在の日本では手作業からIT自動化の流れが進んでおり、「手作業派 vs IT自動化派」は現場でみられる構図です。

ですので手作業派からの嫌味の発言として考えられます。

さらにIT自動化派にもVBAとRPA、さらには他のプログラミング言語による開発もあるため、「VBA派 vs RPA派 vs 他のプログラミング言語派」という構図になります。

最近はRPAが流行っていますので、RPA売込みのためのVBAを叩く発言といった場合や、他のプログラミング言語の開発者がVBAを低く評価している場合の発言として考えられます。

※私自身はVBAもRPAも奨励する立場であることは追記し明記しておきます。

以上から、このような発言は寧ろVBA(プログラマー)が優秀であることを遠回しに表現する賛辞である、とプラスに解釈しましょう。

まとめ

VBAとマクロの違いについて具体的かつ合理的に本音ベースで中辛解説しました。

VBA開発者としてはマクロという言葉を使う場合には上述(1)と(2)と(3)の意味を明確に区別するように発言して頂きたいというのが本音のところです。

最後までお読み頂きましてありがとうございました。

Amazon Kindle Unlimited

10冊まで同時に読み放題の電子書籍サービス(200万冊以上が対象)。

PC・ITカテゴリーの対象数は7,000以上。

スキル、ノウハウ吸収や話題作りにと、ライフ・クオリティを高めてくれます。

関連記事

Topへ戻る