VBAとマクロは、Microsoft Officeに関わる業務の効率を高めることで、業務の自動化を図るものです。どちらも文字列操作や資料作成の自動化が図れるなど似ている点はありますが、明確な違いがあるため目的に応じて使い分けを行うことが重要です。
本記事ではVBAとマクロの違いやそれぞれができることとできないこと、マクロを使用できない場合の対処方法について解説します。ExcelやWord、Accessなど、日常的に使用している方や、業務プロセスの改善や効率化により生産性向上を図りたい方はぜひ参考にしてください。
VBAとは
VBA(Visual Basic for Applications)とは、Microsoft Office製品の機能を拡張・自動化するためのプログラミング言語です。VBAでプログラムを作成すると、アプリケーション上の繰り返し作業や決まった手順で行う操作が自動化できるため、業務効率化に大きく役立ちます。
VBAはMicrosoftのVisual Basicをもとに開発されていて、WordにはWordのVBA、ExcelにはExcelのVBAが組み込まれています。そのためWordやExcel、PowerPointといったMicrosoft Officeのアプリケーションがあれば、プログラミングの開発環境がなくてもVBAに直接コードを記述したり実行したりできます。
初心者でも比較的挑戦しやすく、WordやExcelなどのファイル内にプログラムが保存されているため、データの管理も容易です。
マクロとは
マクロとは、Excelなどのアプリケーションソフト上に、繰り返し行う操作をあらかじめ設定しておくことで自動化を図る機能です。データ操作や作業など複数の操作をまとめて記録しておき、必要なタイミングにはボタンクリックやショートカットキーなど簡単な操作で自動実行できます。
マクロの作成方法は、プログラムのコードを直接手入力する方法と、「マクロの記録」でユーザーが操作した内容を記録する方法の2つがあります。
「大量のデータに対してデータ集計を行う」「レポートの生成を行う」「印刷する」など色々な作業に使われます。後述するような日々の定型作業の効率化や作業の正確性が向上します。
VBAとマクロの違い
VBAとマクロは「ある操作をまとめて準備しておいて、必要な際に簡単に実行する」など、似ている点が多いため混同されることも少なくありません。しかし、VBAとマクロは異なるものです。
VBAとは、Officeアプリケーション上でマクロ機能を使うために必要なプログラミング言語です。編集はVisual Basic Editor(VBE)という統合開発環境ソフト上でプログラムを作成します。
一方、マクロとはアプリケーション上の機能です。そのため、厳密にはアプリケーションごとにマクロの言語が異なります。ただし「マクロの記録」で操作を記録する際も、内部的にはVBAでプログラム内容が記述されているのです。もし「マクロの記録」の内容をさらに編集したい場合には、作成したマクロをVBAで編集する必要があります。
VBAでできること・できないこと
VBAは必要なデータを素早くまとめて報告書やグラフ化などができるものの、できないこともあります。詳しく見ていきましょう。
VBAでできること
VBAでできることには、情報の転記やレポートの作成、数値や文字列の変更や置換といった入力作業やデータ収集、Office製品同士のアプリ連携などがあります。ここでは具体的に以下の5項目をピックアップして詳しくご紹介します。
- データ集計の自動化
- 帳票作成の自動化
- メールの一括送信
- Microsoft Officeアプリケーション同士の連携
- ログの解析
データ集計の自動化
VBAでは、Excel内のデータを必要な条件に従って並び替えて集計するようなデータ集計の自動化が簡単に実行できます。
例えば、Excelで売上データを管理している場合、顧客や商品の売上情報の集計が可能です。夕方の販売状況、特定の年齢層に対する売上状況など、目視と手作業で1つひとつ作業することもある、条件や四則計算を組み合わせた集計もできます。
帳票作成の自動化
VBAは、条件に合うデータを抽出して事前に定めたテンプレートの指定箇所に記入する操作ができます。
例えば、一覧になっているExcelデータから、請求書や領収書、入出金伝票などを作成することができます。日付や取引先、金額の転記や、全角と半角の修正、条件に当てはまらない情報が記述された場合の警告などが可能です。
メールの一括送信
メールマガジンや日報、月報など、書式の決まった文章であれば、メールを作成して一括送信することができます。文章の情報を作成することに加え、適宜テキストリンクを挿入したり添付ファイルを追加したりすることも可能です。
Microsoft Officeアプリケーション同士の連携
マクロとは異なり、VBAはMicrosoft Office製品全体で使用できるプログラミング言語のため、ExcelやWord、PowerPoint、Accessなどアプリケーションをまとめた操作が可能です。
例えば、人の手作業だけで1万人の見込み顧客にキャンペーンのお知らせをメールする操作を行うには相当な時間がかかります。
VBAであれば以下のような操作が一括で実施できます。
- Excelの顧客データから、条件にあうターゲットユーザーを抽出
- 顧客の名前入りの文書を作成
- キャンペーンの案内文書を添付
- メール送付
また、Accessで在庫管理を行っている情報を読み込んで、在庫量の推移や倉庫の回転数、商品カテゴリ別在庫などをExcelでグラフ化することも可能です。
ログの解析
VBAでは、テキストファイルやCSVファイルの情報が読み込めます。サーバーやアプリケーションなどから出力されるログを活かして以下のような解析が可能です。文書作成までプログラム化すれば報告書の作成負担も減らせます。
- 異常検出:エラーログなど
- セキュリティ違反の識別:セキュリティ関連イベントなど
- 利用状況の分析:アクセスログなど
- トレンド分析:アクセスログ、トランザクションログなど
VBAでできないこと
VBAはOffice製品に特化して開発されたプログラミング言語のため、なかには他のプログラミング言語でできることに対応していない場合もあるのです。VBAでできないことには以下のような処理があります。詳しく見ていきましょう。
- アプリケーションの開発
- Microsoft Officeアプリケーション以外の連携
- 大容量のデータ処理
アプリケーションの開発
VBAは機能拡張を目的に開発されているプログラミング言語のため、JavaやC#、Pythonなどアプリ開発が主目的であるプログラミング言語ほど機能やデザインの幅が大きくありません。入力フォームなどもデザインが非常にシンプルです。
Microsoft Officeアプリケーション以外の連携
VBAは、ExcelなどMicrosoft Officeのアプリケーション上で使用するために開発されたプログラミング言語です。そのためOffice製品内での作業は自動化できますが、VBAのコードを他のプログラミングに読み込んでも実行できるとは限りません。
大容量のデータ処理
VBAの処理は、実行環境のCPUやメモリ、VBAコードの記述内容に依存します。数千件などデータ量が多くなると、実行に時間がかかる傾向があります。1万件を超えると、VBAの処理速度や安定性に影響が出ることが多く、処理が追いつかなければVBA自体がフリーズする可能性もあります。
マクロでできること・できないこと
VBAと同様に、マクロでもできることとできないことがあります。マクロはアプリケーションごとに異なりますが、ここではExcelの「マクロの記録」機能に着目して解説します。
マクロでできること
Excelマクロではマウスのポインタ位置の記録やその選択内容などが記録できます。そのため同じ作業を繰り返す反復作業を記録するのがおすすめです。マクロでできることには以下のような処理があります。詳しく見ていきましょう。
- 書類作成
- セル集計
- データチェック
- データ集計
- ファイル統合・分割
書類作成
Excelのマクロは、請求書の作成や紙・PDFなどへの印刷、Wordの差し込み印刷などに対応しています。そのため、レポートや請求書、納品書、シフト表など書式が決まっている書類であれば、数値の最新化も可能です。
セル集計
Excelのマクロでは、複数シートから特定のセルの値に記載された値を抽出して集計することができます。例えば、営業担当者の売上情報から、特定の商品を誰が最も販売したかなどの集計が可能です。
データチェック
対象シートのセル上に空欄や不要なスペースがないかをはじめ、英数字や文字の半角・全角チェックなどが可能です。もし正しくない場合は指定の数値や文字列を入力したり半角と全角を置換したりできます。
データ集計
条件に基づいたデータの抽出やフィルタリングを行って必要な情報だけを表示したり分析したりできます。また、数値計算やピボットテーブルの作成、グラフ化、条件付き書式などにも対応しています。月末に自動で売上合計を計算し、報告書に最新の売上グラフを載せるなどの作業が可能です。
ファイル統合・分割
Excelのマクロでは、複数のシートやブックのデータを1つのシートに集約することができます。
また、大規模なデータシートについて、条件に応じてファイルを分割できます。月別のデータをまとめたり、地域や部門といった特定の列で分けて保存する際に便利です。
マクロでできないこと
マクロは、数値処理や文字列操作などができるものの、どのような処理にも対応できるわけではありません。マクロでできないことには以下のような処理があります。詳しく見ていきましょう。
- ループ処理
- 条件分岐
- VBAでできないこと
ループ処理
ループ処理とは、特定の条件を満たすまで、または指定した回数だけ、同じコードを繰り返し実行するというプログラミング処理です。VBAではループ処理がよく使われますが、マクロにはそのような機能がサポートされていないため実行できません。
条件分岐
条件分岐とは、「もし~という条件が正しい場合はA、正しくない場合はB」という特定の条件に基づいてプログラムの実行内容を変える処理です。VBAではよく用いられる処理ですが、マクロではサポートされていません。
VBAでできないこと
マクロ機能はVBAをもとに作られているため、VBAで処理できないことはマクロでも実行できません。外部データベースとの非同期通信や複数のプロセスを並行して実行するマルチスレッディング処理、グラフィック処理など高度な処理には対応できません。
マクロを使用できない場合はRPA
RPA(Robotic Process Automation)とは、ソフトウェア上のロボット技術です。RPAは「ロボットによるプロセスの自動化」という意味であり、マウスを操作した位置やキーボードの入力内容などの手順を記録することで、人間がパソコンを使って都度判断作業している作業の自動化が図れます。
VBAがプログラミング言語であるのに対し、RPAはローコードまたはノーコード開発に対応しており、プログラムを作成するコーディングのスキルがなくても使用可能です。
また、Office製品に限らず、任意のアプリケーションを含めて自動化することが可能です。
例えば「CRMシステムから顧客データ情報を抽出して別の会計ソフトウェアの必要箇所に入力を行う」「顧客からの問い合わせにチャットボットで応答」など完全に異なるプログラム同士での連携が可能です。
VBAやマクロだけでは実現できない操作でも、RPAを用いて自動化を図れることがあるのです。
まとめ
VBAはプログラミング言語で、マクロはOffice製品の機能のひとつです。どちらも数値や文字列処理などの自動化が図れますが、VBAやマクロで対応しきれないことはRPAで自動化を目指すのも一案です。RPAは専門的なプログラミングの知識がなくても開発できるため、比較的簡単に導入可能です。
しかし、なかには自動化を目指したい業務について、何が最適なのかわからないこともあるでしょう。
もしVBAやマクロ、RPA関連の開発などを外注する際は、プロ人材の活用もおすすめです。
エッジワークには、RPAエンジニアやRPAコンサルタントなど、RPAのプロ人材が多数在籍しています。自社の課題を最速で解決できる業務委託先を見つけたい方はぜひお気軽にご相談ください。
副業社員・フリーランスなどのスポットワーカーにプロジェクト単位でタスクを依頼・発注できるプロ人材活用サービス