VBAとマクロの違いとは?VBA・マクロができること、
マクロの作り方を徹底解説!

近年、業界業種を問わず多くの企業が生産性向上を実現するために、業務効率化が推進されています。その中で、パソコン業務を効率化するための手段として、「マクロ」や「VBA」という言葉を耳にする機会は多いのではないしょうか。
「マクロ」と「VBA」は同じ場面で使われることが多いため、混同されて使用されがちですが、実は厳密には定義が異なる言葉です。ここでは、それぞれの言葉の定義や違いを解説。そのうえで、「マクロ」や「VBA」でできることとできないこと、さらには実際にマクロを使う際の手順を分かりやすく紹介します。業務効率化を考えている各企業のご担当者様が、基礎知識を身につけるための読み物として参考にしていただければと思います。

VBAとは

VBAは、「Visual Basic for Applications」の略語で、ExcelやPowerPointといったMicrosoft Officeのアプリケーションの機能を、拡張することができるプログラミング言語のことです。名前が似ているものに、Microsoftが開発したプログラミング言語であるVB(「Visual Basic」の略語)があります。VBはWindows関連の開発に活用されるプログラミング言語および開発環境であり、このVBをベースにして作られたのがVBAです。VBAはあくまでExcelなどのアプリケーション内で使用できる専用のプログラミング言語です。逆を言えば、開発環境を構築する必要があるVBに対して、Officeのアプリケーションがあればそれだけで使用できるのがVBAです。Officeのユーザーは、VBAを用いてプログラムを記述することにより、アプリケーション上での定型作業や複雑な処理を自動的に実行することができます。

マクロとは

マクロは、アプリケーションソフトであらかじめ操作手順を設定しておくことによって、必要なときに簡単に実行させることができる機能のことです。その中でもExcelのマクロ機能を指して使われる場合が多く、ここでもExcelのマクロとして紹介します。Excelの機能のひとつですから、「関数」や「テーブル」、「フィルター」といったものと同列と考えて良いでしょう。また、マクロを使うにはプログラミング言語が必要になりますが、Excelには「マクロの記録」という便利な機能が用意されています。これは、実際にExcel上で行った操作を覚えさせることができるものです。この「マクロの記録」を使うことで、プログラミング言語の文法などを細かく覚えることなく、簡単にExcel上の作業を自動化することができます。

関連情報:
コラム「RPAとマクロの違いを比較!それぞれの特徴や共通点も解説」

VBAとマクロの違い

上で述べたとおり、VBAはプログラミング言語であるのに対して、マクロは機能です。マクロを作成するためには、アプリケーションごとに異なるプログラミング言語を用います。そしてOfficeアプリケーションであるExcelのマクロ機能を使うために、必要になるプログラミング言語というのがVBAなのです。そのため両者は同じものとして混同される場合が多くありますが、厳密には異なるものです。
また、前項で「マクロの記録」について紹介しましたが、これがあればVBAは必要ないと思われるかもしれません。しかし、「マクロの記録」はVBAでプログラミングされており、あくまでユーザーが手書きすることなく、簡単にマクロ機能を使えるというだけです。また、実際には「マクロの記録」でできる内容には限界があります。より複雑な処理を細かく制御するためには、VBAを使ってコードを手書きし、マクロを作成する必要があります。
なお、VBAのコードを手書きする際に使う編集エディターは、VBEと呼ばれるものです。VBEは「Visual Basic Editor」の略語です。名前が似ているため、こちらにも注意しましょう。

VBAでできること・できないこと

では、ここからはVBAで「できること」「できないこと」を紹介します。なお、一般的な用途に合わせて、主にExcel上でのVBAの使い方を中心にしています。

VBAでできること

Microsoftアプリケーション用のプログラミング言語とは言え、VBAを使いこなすことができれば、簡単な業務システムをVBAだけで実装することもできるので、さまざまな業務の効率化が図れます。下記はその一例です。

VBAでできること1:データ集計の自動化

自社の売上をExcelで管理している場合、VBAを使うことで、その売上データを顧客別や商品別などに並び替えて、集計することができます。

VBAでできること2:メールの一括送信

メールマガジンや日報、月報など、定期的に送るもので、フォーマットが決まっているメールであれば、VBAを使って、メールを自動的に作成して一斉に送信することができます。

VBAでできること3:アプリケーションの連携

VBAを使えば、ExcelやPowerPoint、AccessといったMicrosoft Officeのアプリケーション同士を連携することできます。例えば、Accessで管理しているデータから売上金額を読み込み、Excelでグラフ化するといったことが可能です。

VBAでできないこと

上記のように、さまざまなことができるVBAですが、VBAでも対応しきれないこともあります。

VBAでできないこと1:膨大なデータ処理を伴う作業

VBAを使ってデータを集計したり、帳票を自動で起こしたりといったことはできるものの、処理能力はそれほど高くないため、数万レベルの膨大なデータを処理しようとすると、どうしても時間がかかってしまいます。また、処理しきれずにフリーズしてしまう可能性もあります。

VBAでできないこと2:Office以外のアプリケーションとの連携

VBAは、Officeアプリケーションで使えるプログラミング言語です。そのため、VBAで書かれたプログラムを認識できない、他社のアプリケーションとの連携はできません。

VBAでできないこと3:アプリケーションの開発

もともとVBAはExcelなどの機能を拡張するもので、アプリケーション自体を開発するプログラミング言語ではありません。VBAを駆使してアプリケーションを開発することは、できなくはないのですが、デザイン性に優れたものなどを開発するには不向きだと言えます。

Excelマクロでできること・できないこと

次に、VBAを使わずにExcelマクロで何ができるかを紹介します。この場合には、「マクロの記録」機能を使用するのですが、VBAに比べるとできる範囲が狭くなります。

Excelマクロでできること

「マクロの記録」は、Excel上で行った手作業を記録しておき、それを再現することができます。データの並び替えや抽出、集計などができるのですが、ここでは「マクロの記録」が何をしているかを踏まえて紹介します。

Excelマクロでできること1:位置の記録

「マクロの記録」では、まず記録を開始したとき選択されているセルの場所を記憶します。そこからセルを移動すると、移動後の位置情報を記録していきます。このように、セルの位置を一つひとつ記録しながら、Excel上での一連の手作業を記録しています。

位置を記録する方法としては、「絶対参照」「相対参照」の2つがあります。絶対参照は、「B2のセルからD5に移動」という記録の仕方で、相対参照は「列を右に2、行を下に3移動」という記録の仕方です。なお、デフォルトでは絶対参照で記録されるのですが、相対参照に変更することもできます。

Excelマクロでできること2:特定の位置だけで動く処理の記録

上記のとおり、絶対参照では特定のセルのみで動く処理を記録することできます。シートの移動なしで「マクロの記録」を実行すれば、特定のシートの特定の位置だけで動作するマクロを作成できます。

Excelマクロでできること3:定型作業の記録

上の例とは逆に、相対参照で記録すれば、セルやシートに関係なく「一定範囲内のデータを抽出して、別のシートに転記する」といった作業を記録することができます。これにより任意のセルを起点にデータを転記するというような、定型作業のマクロを作成することができます。

Excelマクロでできないこと

手軽に使えて便利な「マクロの記録」ですが、いくつかの限界があります。下記はその一例です。

Excelマクロでできないこと1:ループ処理の記録

ループ処理とは、特定の条件を満たすまで同じ処理を繰り返すことです。こういった作業を「マクロの記録」では記録することはできません。ループ処理を行いたい場合には、VBAでコードを編集する必要があります。

Excelマクロでできないこと2:条件分岐

「マクロの記録」は、作業をそのまま記録しているため、自分で判断するような作業は再現できません。そのため、「もし、空白セルがあれば処理を実行しない」というような、特定の条件によって処理を分けることはできないのです。

Excelマクロでできないこと3:VBAでできないこと

「マクロの記録」はあくまでVBAを使えない人でも簡単に操作を記録できる機能です。記録した内容はVBAでコードが記述されて、マクロとして作成されています。それゆえ、VBAでできないことは、当然「マクロの記録」でもできません。

マクロでExcel操作を自動化する方法

Excelのマクロを作成する方法は2つあります。1つ目は前項でも触れたとおり、Excelの機能としてもとから備わっている「マクロの記録」を利用する方法です。2つ目は、VBAを使ってコードを手書きする方法です。ここからは、それぞれの作成方法を紹介します。

マクロの記録を使う

まずは、コードの知識がなくてもできる「マクロの記録」を利用して、マクロを作成してみましょう。

ステップ1:開発タブを表示する

「マクロの記録」を利用するには、まずExcelに「開発」タブを表示しなければなりません。初期設定では非表示になっているため、以下の手順で設定を変更してください。

  1. まず「ファイル」から「オプション」をクリックします。
    表示されない場合は「その他」の中の「オプション」をクリックします。

  2. 次に「リボンユーザー設定」をクリックし、「メインタブ」の中にある「開発」のチェックボックスにチェックを入れて、OKをクリックします。

  3. メインタブに「開発」タブが表示されます。

ステップ2:手順を記録する

Excel上での操作手順を記録します。

  1. メインタブから「開発」タブを開き、「マクロの記録」をクリックします。

  2. 「マクロの記録」のダイアログボックスが表示されるので、任意のマクロ名を入力し、保存先を設定します。

    なお、保存先は「作業中のブック」「新しいブック」「個人用マクロブック」から選ぶことができますが、「作業中のブック」「新しいブック」に保存した場合には、そのブックを開かなければマクロを実行することができません。「個人用マクロブック」に保存した場合には、ブックを開かなくてもマクロを実行することができるので、個人でマクロを利用する場合は「個人用マクロブック」を選択すると良いでしょう。

  3. 「OK」をクリックすると、「マクロの記録」が始まりますので、記録したい操作を実際にExcel上で行います。
    記録したい操作が完了したら、「開発」タブにある「記録終了」をクリックします。

ステップ3:作成したマクロを保存する

次に、先ほど「マクロの記録」を行ったブックをパソコンに保存します。

  1. 「ファイル」から「名前を付けて保存」をクリックします。

  2. 「Excelマクロ有効ブック」として保存します。
    なお、「個人用マクロブック」を選択した場合には、ブックを閉じる際にこのようなダイアログボックスが表示されます。個人用マクロブックの変更を保存するか否かを確認されるので、「保存」をクリックします。

ステップ4:マクロを実行する

最後に、先ほど作成したマクロを実行し、きちんと記録できているかどうかを確かめてみましょう。

  1. まずは「開発」タブから「マクロ」をクリックします。

  2. ダイアログボックスが表示されるので、先ほど作成したマクロを選択し、「実行」をクリックします。

  3. 先ほど作成したマクロが実行されているかどうかを確認しましょう。

このように「マクロの記録」を使えば、誰でも簡単にマクロを作成することができます。

VBAのコードを書く

誰でも簡単に扱える「マクロの記録」は非常に便利である一方で、できることの範囲が狭いというデメリットがあります。そのため、「マクロの記録」ではできないような複雑なパソコン操作を伴う業務を自動化する場合には、VBAのコードを自分で手書きしてマクロを作成する必要があります。

ステップ1:VBEを開く

マクロのコードを編集するため、まずは編集エディターであるVBEを開きます。

  1. メインタブから「開発」タブを開き、「Visual Basic」をクリックします。

  2. 別ウィンドウでVBEが起動します。

ステップ2:標準モジュールを挿入する

次に、「標準モジュール」を挿入します。「標準モジュール」は、コードを記述するための場所だと思ってください。

  1. VBEの左端に表示されているプロジェクトエクスプローラーを右クリックすると、メニューが表示されます。

  2. メニューの中の「挿入」から「標準モジュール」を選択します。

  3. VBEの右側のスペースに、コードを記述するための「標準モジュール」のウィンドウが開きます。

ステップ3:コードを入力する

「標準モジュール」のウィンドウにVBAを使用して、任意のコードを入力します。

ステップ4:マクロを実行する

ツールバーにある「SUB/ユーザーフォームの実行」ボタンまたは「実行タブ」の「SUB/ユーザーフォームの実行」を押すと、マクロが実行されます。

エクセルに戻り、VBAが実行されているかどうかを確認しましょう。

「ステップ3」のところで自分でコードを書くためには、プログラミング言語であるVBAをいちから学ばなければなりません。プログラミングを一度も経験したことがない方やIT知識があまりない方にとっては、なかなか手を出しづらいかもしれませんが、VBAはプログラミング言語の中では学びやすいほうだと言われています。また、VBAを習得できれば、Excelだけではなく、Microsoft社のPowerPointやWordといったアプリケーションでもマクロを使えるようになるので、知識として有用です。

マクロの使用が難しい場合は、RPAを使おう

ここまで紹介したとおり、Excelの「マクロの記録」は誰でも簡単に扱えるため便利ですが、できる範囲が限定的というデメリットがあります。その一方、VBAを扱える人材がいる場合には、かなり広い範囲の作業を自動化することでき、業務効率化を図ることができるでしょう。ただし、VBAの知識を持った人材がいない場合には、誰かがVBAを習得する必要があり、自由に使えるようになるまでには時間がかかってしまいます。また、VBAにできる事にも限界があります。
そういった場合には、RPAがおすすめです。RPAであれば、人間がパソコン上で行うさまざまな業務をロボットで自動化することができます。

関連情報:
コラム「RPAでできることは?どこまでRPA化するべきかも解説」

RPAなら日立ソリューションズにお任せ

日立ソリューションズでは、お客様が抱えている課題に合わせて、下記のようなさまざまなRPAツールやサービスをご提案しています。

  • Automation 360(旧 Automation Anywhere Enterprise A2019)

    Automation 360は、ユーザーが直感的に使えるようなUIに優れたRPAプラットフォームです。また、すべての機能がクラウドで利用できるため、企業の成長に合わせて簡単に拡張することができます。

  • Workato

    Workatoは、作業工程の中に人の判断が入るような、RPA単体での自動化が難しい業務でも、Microsoft TeamsやSlackなどのチャットを介して人とシステムとRPAをつなぐことで、人の判断が必要なさまざまな業務プロセスを自動化することができます。

  • RPA業務支援BPOサービス

    RPA業務支援BPOサービスは、RPAに関連する業務をまるごと代行するサービスです。RPAで自動化する業務の選定から、ロボットの開発やRPA利用者の教育、導入後の運用までを、日立ソリューションズがお客様に代わって行います。

さらに、日立ソリューションズなら、自社でのRPA活用実績や、100社以上のお客様への導入経験をから得たノウハウをもって、RPAツールをより効果的に活用できるようなご提案が可能ですので、安心してお任せいただけます。

関連情報:「日立ソリューションズのRPA業務自動化ソリューション」

まとめ

Excelを普段からよく使っていて、簡単な関数なら扱えるという方は多いと思いますが、VBAを使ってマクロを作成できる方は、それほど多くないのではないでしょうか。本コラムで紹介したとおり、VBAは業務効率化をする際には強い武器になります。自分自身や会社のために、今からVBAを学んでみてはいかがでしょうか。もし「業務に追われていて、そんなに余裕がない…」という場合には、専門家にRPA導入を任せるというのも一つの手です。マクロやRPAを導入し、生産性を高めて、より利益を生むことができる企業へと変革していきましょう。

関連コラム

関連するお役立ちコンテンツ

  • Automation 360(旧:Automation Anywhere Enterprise A2019)

    オートメーション・エニウェアが提供する最新のRPAプラットフォーム。
    あらゆる種類のユーザーのニーズに対応する、完全Webベース・クラウド対応のRPAプラットフォームです。

  • Workato

    人の判断が入る業務や予期せぬ画面変更などが起こるクラウドサービスなど、RPAでの自動化を断念した業務を自動化。
    人とRPAロボットの協働作業を実現します。

  • RPA業務支援BPOサービス

    RPA業務支援BPOサービスは、ロボット開発や社内問い合わせ対応、運用などのRPA推進部門の業務をまるごと代行するサービスです。 RPAの全社展開のボトルネックを解消し、RPA活用拡大を強力にサポートします。

閲覧数が多い記事

RPA業務自動化ソリューション コンテンツ一覧

関連商品・キーワード