エクセルにはさまざまな機能が搭載されており、その中でもVBAとマクロは重要です。それでは、VBAとマクロにはどのような違いがあるのでしょうか。
本記事ではVBAとマクロの違いから具体的な活用方法についてまで詳しく紹介します。
エクセルに関してあまり詳しくない初心者の方はぜひとも参考にしてください。
2014年 大学在学中にソフトウェア開発企業を設立
2016年 新卒でリクルートに入社 SUUMOの開発担当
2017年 開発会社Jiteraを設立
開発AIエージェント「JITERA」を開発
2024年 「Forbes 30 Under 30 Asia 2024」に選出
アプリ・システム開発は生成AIを活用することで、従来の開発ではあり得なかった、低コスト・高品質開発・スピード開発が同時に実現できます。
▼従来の開発とAIを使った開発の違い
システムソリューションを得意とし、新規事業からDX推進まで幅広いジャンルの開発実績があります。
VBAとマクロはどう違う?
マクロはエクセルに備わった機能であり、マクロを利用するためのプログラミング言語がVBAです。
VBAとマクロの違いを以下に表でまとめました。
VBA | マクロ | |
概要 | エクセルで使えるプログラミング言語 | 特定の操作の記録や再生ができる |
機能 | エクセル上のさまざまな操作を、 プログラムにより細かく制御できる |
手入力の作業内容を記録して、 任意のタイミングで再生できる |
できること |
|
|
VBAとはエクセル上で扱えるプログラミング言語のことです。VBAを用いるとさまざまな操作の制御が可能であり、複雑な処理も指示できるのが特徴です。
一方、マクロとは特定の操作の記録や再生ができる機能を指し、簡単な作業を扱えます。マクロで制御できるのは単純な内容に限られ、複雑なプロセスの再現はできません。マクロの処理も基本的にはVBAと同様にプログラムとして制御されるものです。
目的に合わせて使い分けることで、業務効率化やコスト削減など多くのメリットを得られます。
マクロは動作を記録することで自動的にプログラムのコードが記述され、VBAは自分でマクロのコードを一から記述できる点が大きな違いといえます。
VBAでできること
VBAはコードを記述するだけで幅広い作業をプログラムに任せられる便利な機能です。上手く活用すれば業務効率化や人為的ミスの削減、コスト削減など多くの恩恵があります。
以下ではVBAによって何ができるのか詳しくみていきます。
計算の自動化
VBAは、計算の作業をコードで記述しておけば、いつでも簡単に実行できます。さまざまな数値にまつわるデータの計算をコンピュータに任せられるため、業務効率化やミスの削減など多くの課題を解決できます。
手計算をするとミスが増える可能性があり、時間がかかるなど問題が多いのですが、VBAを用いれば多くの業務を省くことが可能です。たとえば、小売業で多くの売り上げの計算業務が発生する場合に適しています。
VBAを用いると、ファイルからデータを取得してエクセル上で表にデータを入力し、合計値などの計算を実行させるといった作業の制御も可能です。ワードから特定の数値を抜き出してエクセルに出力して計算させる処理も行えます。
文書や帳票の作成の自動化
VBAは文書や帳票の作成、印刷の作業などをプログラムで実行できます。VBAによってヘッダーやフッター、フォント、ページ番号などを自動設定するプログラムを組むことで、文書や帳票の統一化が可能です。
各書類のテンプレートを作るのに役立ち、請求書や見積書などの作成が楽になるため、業務効率化や人為的ミスの削減につながります。
エクセルのデータを取得して、ワードの該当する部分の数値を埋めていくといった作業も実現できます。作成したファイルのPDF化や印刷も制御でき、最初にデータを入力すれば自動で帳票が作成され、印刷まで行えるため便利です。
手順が決まっていて、同じパターンの繰り返しが生じるようなタスクであれば、VBAで作業を制御できます。
転記の自動化
請求書や帳票などを作成する際に、別ファイルからデータを転記させる作業は、VBAを使えば自動化できます。
VBAの場合は、特定の条件下でのみデータを転記するなど複雑な処理もプログラムにできるため便利です。
異なるOffice製品間におけるデータの転記の処理も扱えるため、幅広い場面に適用できます。シート上の注文書のデータをまとめてワードで売上資料を作成するケースなどで役立ちます。
複数のエクセルファイルのデータを参照して該当するデータをワードに転記するといった作業も扱えるため、多くの作業を省けるのがメリットです。
実際の仕組みとしては、ワードに文章を差し込む際に段落を指定する方法や、「A個数」など特定の文字列を探して該当する部分のデータを置き換えるなど幅広いやり方があります。
メール作成、一括送信の自動化
VBAを用いると、メールの作成からOutlookを使った一括送信までの処理を、エクセル上にてボタン1つで実行可能です。
エクセル上でメールの文書を作成し、Outlookのメール送信画面に転記した上で一括送信するまでのプロセスをコードによって指示できます。メールの文章をテンプレートとして作成しておき、空欄部分を別のファイルから取得したデータで置き換えることで文章の自動作成も行えます。
業務上の重要な連絡事項を複数の関係各所へメールで伝えたいという場合に便利です。メール本文だけではなく添付ファイルもつけた上で送信する作業も指示できます。
事前に一括送信先のメールアドレスや会社名、部署名などをリスト化しておく必要がある点は注意しましょう。
また、文字列や宛先などの情報の誤りや文字列の設定のミスがあると、メールの内容に問題が生じる可能性があるため気をつけましょう。
Webデータ収集の自動化
VBAを使用するとWeb上のデータ収集の作業の自動化が可能です。指定したWebサイトからHTMLソースコードを取得し、必要なデータを抽出して、表に書き込ませるまでを指示します。
競合分析や市場調査などを行う際に必要なデータの取得の作業を省くことが可能です。たとえば、競合他社のホームページから製品やサービスの詳細やプロモーション活動などのデータを収集し、表としてまとめる作業を実行できます。
大量のデータを自動かつ短時間で収集し、データ分析のための整理をさせることも可能です。Webデータ収集から整理までの業務を省略できれば、データ分析に多くのリソースを集中できます。
VBAでできないこと
VBAは万能ではなく、扱えない領域があるため注意しましょう。たとえば、膨大な数のデータを処理するのには不向きで、逆に効率が悪くなります。
以下ではVBAでできないことと、その理由について詳しく説明します。
膨大な数のデータ処理
VBAは膨大な数のデータの処理には向いていない点に注意しましょう。数万行を超えるようなデータの場合、一気に短時間で処理するのは困難です。
VBAの処理能力はそれほど高くなく、膨大な数のデータ処理を想定した言語ではありません。1,000行程度のデータを扱う場合でも処理が重くなる場合があるため、VBAによるデータ処理には対策が必要になります。
VBAのデータ処理速度を高速化するには、画面更新をオフにする、処理の一部を手計算で行う、QueryTablesメソッドを活用するなどの対策があります。
また、できるだけシンプルなコードを書くことを心がけて、無駄なコードを取り除くことも効果的です。
アプリの開発
VBAは本格的にアプリ開発をするのに不向きです。あくまでもOffice製品での使用を前提としており、VBAで作ったアプリはOffice製品以外では使用できません。他社製品やサービスとの連携ができず、用途が限定的になります。
また、VBAはアプリ開発を目的とした言語ではないため、処理速度が遅い点もアプリ開発に不向きな理由の1つです。アプリ開発に必要な操作画面のデザインなどの作業にも向いておらず、開発を進めるのは難しいといえます。
他の汎用的な言語を用いた方が、より高機能で便利なアプリを効率的に作れるため、わざわざVBAを利用するメリットはほとんどありません。
システム開発やWeb開発などを行いたいならば、それぞれの目的ごとに適した言語を活用しましょう。
サポートされていないアプリとの連携
VBAはOffice製品との連携を前提として開発された言語です。そのため、VBAはOffice製品以外の製品・サービスと提携することはできません。
サポート外のアプリと連携する手段は存在しないため用途が限定的です。サポート外のアプリを扱おうとしてもコードが認識されません。
Office製品であれば、多くの製品との連携が可能であり、さまざまな機能を扱えます。たとえば、インターネットブラウザであるEdgeで情報収集を自動で行うプログラムを作ることは可能です。
Microsoftは豊富な製品を展開しており、VBAと連携させることでさまざまな目的を果たせます。
エクセルでVBA・マクロを使うときの主な方法
エクセルでVBAやマクロを使いたいならば、手順に従って操作していく必要があります。以下ではVBAとマクロを扱う方法について、手順の説明とポイントを紹介します。
「マクロの記録」を使う
エクセルの「マクロの記録」を使うための手順を順番に説明します。
1.開発タブのコードで、「マクロの記録」をクリックする。
各種設定ができる小画面が表示されます。
2.マクロ名やショートカットキー、保存先、説明を入力する。
マクロ名はできる限りわかりやすいものにしましょう。ショートカットキーを設定しておくと、後ですぐに呼び出すことが可能です。
説明ボックスでは、どんな作業を扱うものか内容をわかりやすく記載しておきます。
3.「OK」をクリックした後で記録する操作を実行し、開発者タブのコードグループにある「記録の停止」をクリックする。
「マクロの記録」の「OK」をクリックした後でマクロに記録したい操作を実行します。開発者タブのコードグループ内にある「記録の停止」をクリックすれば記録の終了です。
4.開発タブにある「マクロ」をクリックした後でマクロを選んで実行する。
自動化したい操作をマクロとして記録した後は、いつでも開発タブの「マクロ」をクリックすれば、記録した作業の実行が可能です。
実際に扱う際には以下のポイントを理解しておきましょう。
- コードの知識は必要ない
- できることの範囲は限られている
- 記録時と実行時の環境を揃えておく
マクロを扱うのにコードの知識は不要であり、実際にエクセルの画面上で行った操作を保存して再現できます。ただし、再現できるのは、マウスやキーボードでエクセルのブックやシート、セルに行った操作のみです。
また、シート名やファイル名などは固定された情報で記録されるため、実行時と環境を揃えておきましょう。
VBAコードを記述する
VBE(Visual Basic Editor)によりエクセル上でVBAコードを記述してさまざまな操作のマクロ化が可能です。
以下にVBAを使うまでの手順を順番に解説します。
1.開発タブからVisual Basicを選んでVBEを起動する。
開発タブの中にある「Visual Basic」を選びましょう。
2.挿入タブから標準モジュールを選択する。
挿入タブの中から標準モジュールを選べば、コードの記述ができる画面が表示されます。
3.マクロ化したいコードを記述する。
実際にマクロ化させたい操作を行うためのコードを記述します。「Sub 関数名()」と「End Sub」の間にコードを記述しましょう。
4.マクロを実行する。
マクロの実行ボタンをクリックすると、記述したコードに従って実際にプログラムが実行されます。
上記の場合は、A1セルに「テスト」というテキストが入力されます。Range()によってセルの範囲を指定して、=の右側の文字列を入力するという意味です。数十行以上ものコードを記述できて、複雑な内容を実行させられます。
実際にVBAコードを記述する際に知っておきたいポイントを以下にまとめました。
- 他のアプリと連携できる
- 言語の学習が必要になる
- デバッグを行う
他のアプリを利用する場合は、参照設定のチェックボックスにチェックを入れておきます。
VBAはコードを記述するために言語の学習が必要になります。学習用の書籍やサイトはたくさんあるため、初心者向けのものを活用して学習しましょう。
作成したプログラムは必ずデバッグを行い、問題なく処理が行われるか確認しておきます。たとえば「F8キー」をクリックすることで、1行ずつプログラムを実行させることが可能です。
1行ずつコードを確認し、問題がないかチェックしていきましょう。
「マクロの記録」と「VBA」の違いと使い分け
「マクロの記録」と「VBA」はそれぞれできることとできないことが異なっています。用途に合わせて使い分けることでそれぞれの機能を最大限に活用できます。
「マクロの記録」と「VBA」の違いと使い分け方について比較表をまとめました。
マクロの記録 | VBA | |
簡単な計算や作業の自動化 | ◯ | △ |
複雑な処理の自動化 | ☓ | ◯ |
他のMicrosoft製品との連携 | ☓ | ◯ |
単純で簡単な自動化であれば、マクロの利用をおすすめします。コードの記述には手間がかかるため、簡単な内容であればマクロで十分だからです。
複雑な処理の自動化や他のMicrosoft製品との連携はVBAを使いましょう。
以下では、「マクロの記録」とVBAの用途ごとの使い分けについて詳しく説明します。
単純かつ簡単な自動化はマクロの記録を利用
エクセル上での簡単な計算や簡単な内容の自動化であれば、マクロをおすすめします。VBAはすべての処理をコードとして記述しなければならず、手間がかかるからです。少しでもコードに誤りがあれば正確に処理が実行されません。
マクロの場合は、自身で行った操作の内容が正確に記録され、ボタン1つでいつでも実行可能です。コードを記述する知識がなくても直感的に利用できるため、誰でも使いやすい点がメリットといえます。
たとえば、メールの一括送信やファイルの一括印刷、同一ファイル内におけるデータの転記などに対応できます。
ただし、エクセル上で操作した内容をそのまま記録する仕組みのため、条件分岐やループなど複雑な条件を含む作業の記録はできません。
ループや条件分岐はVBAを利用
複雑な処理を指示したい場合は、VBAがおすすめです。マクロは自分で操作した内容を記録する仕組みのため、複雑な処理の記録は困難になります。複雑な処理は正確に記録されず、実行してもエラーが出る可能性が高いのです。
VBAを活用すれば、ループや条件分岐など複雑な内容を扱えます。たとえば、繰り返し処理の記述である「For…nextステートメント」や「Do…Loopステートメント」などです。
条件分岐は、if文や論理演算子(Or・And・Not)、比較演算子(等号・不等号)を用いて処理の分岐ができます。
アプリ間で連携したいならVBAを利用
アプリ間の連携をする処理をさせたい場合にはVBAを使いましょう。VBAを用いることでMicrosoftの各製品と連携させた処理を記述できるからです。
たとえば、エクセル上にあるデータをパワーポイントに転記させて、プレゼン資料を作成できます。あるいは、エクセルにあるデータをワードに転記することで、報告書を作成することも可能です。
Microsoftの幅広い製品との連携ができるため、さまざまな用途を考えられます。Office製品との連携にはコードを記述する必要があるのですが、比較的簡単なコードで呼び出しが可能です。
ただし、事前に該当するOffice製品のライブラリを追加しておく必要があります。追加するライブラリはブックごとに管理する仕組みのため、新しいブックを用意するたびに毎回設定が必要です。
VBAとマクロの違いを理解してエクセル開発に活用しよう
エクセルにあるVBAとマクロの機能を上手く活用すれば、さまざまな業務の自動化が可能です。マクロで動作を記録させると、簡単な処理であればボタン1つで実行できます。
複雑な処理を伴う作業はVBAでコードを記述することで対応可能です。
エクセルの機能をフル活用することで、メールの一括送信や報告書の作成、データ収集などさまざまな作業の手間を省けます。
VBAやマクロに関する質問や相談がある場合は、さまざまな開発の実績がある株式会社Jiteraにご連絡ください。
AIを使った開発が可能なプラットフォームを提供し、豊富なノウハウのある企業のため、株式会社Jiteraが幅広いお悩みを解決いたします。