VBAはプログラミング言語の一つであり、「Visual Basic for Applications」の略です。MS Officeの拡張機能として提供されています。
VBAを使えば、作業の自動化が可能です。追加でソフトをインストールする必要が無いため、すぐに開発を始められる一方で、VBAには苦手な作業も存在します。
今回は、VBAの基礎知識やマクロとの違い、習得するメリット、向いている作業、基本的な使い方など、VBAについてわかりやすくご紹介します。
目次
初めてプロジェクト担当者になった方向け
プロが教える「IT基礎知識・用語集」プレゼント
1.VBAの基礎知識
VBAは、「Visual Basic for Applications」の略で、プログラミング言語の一つです。MS Officeの拡張機能としてMicrosoftが提供しています。VBAは、Excelのマクロとしてよく知られていますが、ほかのMS Office製品でも利用可能です。Excel以外にも、Word、PowerPoint、Access、Outlook、Microsoft Edgeなどにも利用されています。
VBAを使えば、MS Office製品の機能を自由自在にカスタマイズでき、業務を効率的にこなすことができます。例えば、Excelでの集計作業を自動化するマクロ、Wordでの文章校正を自動化するマクロなど、多くの場面で活用されます。
そのほかの特徴として、オブジェクト指向プログラミングに対応していることや、マクロの録画機能を持っていることが挙げられます。これらの特徴を活用することで、より高度なプログラミングが可能になります。
VBAは、自分が作成したファイルで動作させることを想定したローカル環境向けの言語です。そのため、開発環境のインストールなどは不要ですが、MS Officeの拡張機能なので、単体での動作はできません。インターネット上には、VBAに関する情報やサンプルコードが豊富に存在していますので、初心者でもVBAを使ったプログラミングを始めやすいでしょう。
●VBAの強み
VBAの強みは、大きく次の三つです。
-
わかりやすくて、プログラミングしやすい
-
一般的なプログラミング言語と比較して、習得時間が短い
-
開発用の環境構築が不要
一つめの強みはわかりやすさです。VBAは人間の言葉に近い記述のため構文がわかりやすくなっており、記述されている情報の理解が難しくありません。プログラミングの初心者にとっては、挑戦しやすい言語です。
二つめの強みは、習得時間の短さです。VBAは、Excelなどのアプリケーションに標準で組み込まれていますので、開発環境のセットアップが不要です。多くのプログラミング初心者にとって、開発環境構築は一つのハードルになっています。その点、VBAはセットアップが必要ないので、すぐにプログラム開発に着手できます。また、オンライン上に多くのチュートリアルやサンプルコードが投稿されているのも特徴です。初心者であっても、解説サイトを見ながら勉強すれば、効率的に学習できます。
三つめの強みは、開発専用に新たなソフトの購入・インストールを行うなど、環境構築が不要なところです。VBA開発に必要なソフトは、仕事用のPCに一般的に搭載されているMicrosoft Excelです。Excelに内蔵されているVBAエディタを使ってコードを作成・編集できます。PCに既にExcelがインストールされていれば、追加でソフトをインストールする必要はありません。一般的なプログラミング言語では「環境構築」という事前準備が必要ですが、VBAではこの準備をせずに開発に取り掛かれます。
●VBA習得のメリット
VBA習得のメリットの一つは、繰り返し行う作業を自動化できるようになることです。毎日、毎週、毎月必ず行う業務や、手順が複雑な処理などは、VBAでの自動化に向いています。今まで数時間かかっていた業務も、VBAを使えば1クリックで完了するため、定型業務を自動化できれば、従業員をより生産性の高い別の業務に集中させられます。自動化による作業効率の向上は、生産性の改善につながります。
また、動作を記録させることでMS Officeをカスタマイズでき、自作のアプリケーションのように使うことも可能です。ExcelだけでなくWordやAccessと連携させたり、入力フォームを作成してデータ入力のミスを防いだりもできます。複雑な処理を行うファイルでも手作業による人為的ミスが減少でき、自分の操作しやすいツールに変えられます。
2.VBAとマクロの違い
VBAとマクロは同じものだと誤解されることもありますが、両者は異なります。正しく理解するため、ここでは二つの違いをご紹介します。
マクロとは、本来「コンピュータの処理を自動化する技術」の総称で、Microsoft社の用語ではありません。しかし、現在ではMS Office上で処理を自動化するための機能の名称として知られています。マクロは、特定のアプリケーション(例:Excel)内で使用され、繰り返し行われる作業を効率化するのに役立ちます。マクロを作成することで複雑な手順や計算、データ処理を自動化し、時間と労力を節約できます。さらに、一度作成されたマクロは再利用可能で一つのボタンクリックやショートカットキーで実行することが可能です。
MS Officeでは、リボンに表示された開発タブ(デフォルトでは表示されません)に「マクロ」とあり、その中にマクロ機能やVBAのコマンドがまとめられています。それが、マクロとVBAが混同されがちな理由です。マクロを用いたシステム開発にかかる費用相場などについてさらに詳しく知りたい方はこちらの記事をご確認ください。
▷マクロ開発の費用相場はどのくらい?依頼先によって変わってくる?
●VBAとマクロの使い分け
VBAは、マクロを作成するためのプログラミング言語です。ユーザーがExcelでマクロを作成すると、Excelの内部でプログラミング言語であるVBAに変換されて保存されます。
マクロはあくまでも手順を記録し、実行するための機能です。
一方、VBAは、マクロを保存してアプリケーションに正確に伝えるためのプログラミング言語です。マクロで行う処理はVBAで保存されていますが、マクロは処理を記録・編集するだけでなく、それを実行したり、セキュリティチェックを行ったりする機能も含まれています。
3.VBAと似ている言葉の違い
VBAのように、アルファベットで省略された用語は複数存在します。初心者にとっては覚えるのが大変です。ここでは、間違えやすいVBAの解釈について三つ紹介します。それぞれ、意味や用途が異なりますので、正しく理解して、効率的に開発を進めましょう。
●VBAとVB
「VB(Visual Basic)」は、VBAの基になっているプログラミング言語で、VBをMicrosoft社のアプリケーション用にしたものがVBAです。VBは単体で動作できますが、環境設定が必要なため費用がかかります。一方、VBAはVBと比べると機能に多少の制限があるものの、MS Officeさえあればすぐに使うことができます。そのため、初心者にはVBよりもVBAのほうがおすすめです。
●VBAとVBE
VBAでコードを手書きしたり、編集したりするには、「VBE(Visual Basic Editor)」を利用します。VBEは、コードを手書きしてマクロを作成・編集するためのアプリケーションで、MS Officeでは開発タブから操作できます。VBEを使用することで、VBAのコードを手書きして作成・編集するだけでなく、マクロの作成や保存、デバッグ、実行など、VBAのプログラミング全般を行うことができます。
●VBAとRPA
「RPA(Robotic Process Automation)」は、パソコン上の定型業務を自動化することを目的としており、VBAと共通点が複数あります。PRAは、プログラミングの知識がなくても業務の自動化が可能です。一方で、VBAはプログラミング言語を習得する必要があります。学習面では、RPAのほうが初心者でも始めやすいでしょう。
RPAとVBAの違いとしては、制御範囲の広さがあります。VBAはMS Office製品上の動作を想定した言語です。一方で、RPAはPC上のほぼ全てのアプリケーションを横断して制御できます。例えば、Webアプリケーションをとおしてオンライン上のデータベースの情報を取得し、Excelでリストを作成して、メールに添付して送信、最後にエクセルのリストを社内システムにアップロード、といった複雑な業務を自動化できます。
4.VBAでできること
ExcelのVBA言語を使って作成するマクロは、多くのビジネスプロセスを自動化するために役立ちます。以下、VBAでできる主な作業・業務を紹介します。
●請求書や納品書の自動作成
Excelで作成した売上管理表から、顧客別に請求書を作成する作業です。請求書のフォーマットを設定し、必要な情報を自動的に差し込むことができます。毎週・毎月発生する業務は、VBAを使えば簡単に自動化できるので作業者の手を空けて、ほかの業務に取り組んでもらうことが可能です。
●大量の文書を一括で印刷
VBAを活用することで、大量の文書を簡単に一括印刷することが可能です。印刷時に必要な設定(印刷の向き、用紙サイズ、印刷部数、印刷先など)をプログラムに組み込んでおけば、印刷の度に必要だった設定の手作業を大幅に削減可能です。
●データの自動チェック・修正
VBAを使えば、データの空欄、全角半角の混在、文字の誤字脱字などを自動的にチェックすることが可能です。さらに、必要に応じて自動で指定した修正をすることが可能です。これによって、データの正確性と品質が向上し、人的ミスによる問題を回避できるでしょう。
●データの集計・グラフ作成
VBAでは、膨大な量のデータを自動的に集計し、一覧表やグラフを作成することが可能です。集計するデータの種類によって、拠点別、部署別、担当者別などの項目で集計が可能です。定期的に決まったフォーマットでグラフを作成している場合は、VBAでの自動化を検討してみましょう。
●ファイルの自動分割・集約
VBAを使用することで、大量のデータが含まれるファイルを、指定した条件に基づいて自動的に分割可能です。また、複数のファイルを自動的に一つにまとめることもできます。複数のファイルを一つにまとめる作業はさまざまな現場で発生するタスクです。自動化できれば、データを管理する手間やミスを減らせます。
●ほかのOffice製品の作業の自動化
VBAを使って、ほかのMicrosoft Office製品の操作を自動化することもできます。例えばWordの場合、マクロにショートカットキーを割り当てることで、Wordの書式設定操作をワンタッチで完了させられます。また、契約書や提案書のような似たフォーマットの文書を大量に作成する際にも、テンプレートに必要な情報を自動で挿入することで、各文書を生成できます。PowerPointの場合も同様に、トンマナを変更するため複数のスライドの色やフォントなどを一括変更したり、Excelで作成したデータやグラフをスライドに直接転送したりするなど、資料作成業務の効率化が可能です。Accessとの連携により、Excelの操作画面でデータ入力や編集を行い、背後でAccessのデータベースを利用する仕組みを実現することもできます。
●インターネット情報の自動取得
VBAでは指定したWebサイトのURLから自動的に情報を取得し、Excelシートに書き込むことが可能です。これにより、競合他社のリリース情報やプロモーション活動などの情報、業界の動向・トレンド、市場変化などに関する情報を集めて、一覧表にまとめて定期的なレポートを作成できます。大量のデータ収集を自動化し、分析に時間を割くことができるようになります。
●PDFのデータ抽出
VBAでは、Adobe Acrobatのライブラリなどを使用してPDFファイルからテキストデータを抽出し、Excelシートに書き込むことができます。複数のPDFファイルからのデータ抽出を自動化することで、手入力のミスなどのヒューマンエラーも防げます。複数のPDFファイルから抽出したデータを一元化することも可能です。
●メールの一斉送信
Microsoft Outlookを使って、Excelシートに保存された顧客情報を基に、一括送信することもできます。大量にメールを送信する作業の効率化に役立ちます。
●ユーザー定義関数の作成
ユーザー定義関数とはVBAを使用して作成するオリジナルの関数のことです。ExcelにはIF関数やSUM関数など多くの組み込み関数がありますが、そうした関数にはない特定のニーズに応じた機能を追加したい場合に、ユーザー定義関数が役立ちます。関数の名前を付けておけば、既存の組み込み関数と同様にExcel上で使用できるため、業務効率化につながります。
5.VBAでは難しいこと
VBAは業務の自動化・効率化に大変役立つものの、難しい作業も存在します。以下、具体的に紹介していきます。
●大量のデータ処理
VBAが処理できるデータの量には限界があります。処理可能なデータ量以上のデータを処理しようとすると、突然パソコンがフリーズしたり、ソフトウェアが強制終了したり、最悪の場合はデータが破損する可能性があります。大規模なデータ処理が必要な場合はVBAではなく、データ処理に特化したプログラム言語の活用を検討してみましょう。
●MS Office製品以外との連携
VBAは、MS Office製品群でのみ動作するプログラム言語です。MS Office製品群とは、Word、Excel、PowerPointなどを指します。MS Office以外のアプリケーションと連携させる場合は、VBAではなく別のプログラミング言語を使いましょう。
●アプリケーション開発
VBAは、本格的なアプリケーション開発には向いていません。VBAで開発されたアプリケーションは、MS Office製品以外では動作せず、ほかのサービスとの連携ができないためです。アプリケーション開発は、用途や規模によって最適なプログラミング言語が存在します。VBA以外にも開発難易度が低いプログラミング言語もあるので、用途にあった開発言語を使用しましょう。
6.Excelのマクロでできること・できないこと
VBAを使わなくても、Excelのマクロで実現できることがあります。Excelのマクロでできることとできないことを押さえておくことで、VBAとの適切な使い分けができるようになるでしょう。
●Excelのマクロでできること
Excelのマクロでは、Excel上で行った特定の作業を記録し、それを再現することができます。そのため、データの並び替えや抽出、集計など、日常的に行うルーティン作業の自動化に役立ちます。
●Excelのマクロでできないこと
Excelのマクロでできる作業には制限があります。できないことは主に「ループ処理」と「条件分岐」です。
ループ処理は、特定の条件を満たすまで同じ処理を繰り返す操作のことで、
条件分岐は、特定の条件に基づいて処理を分ける操作です。こうした作業を自動化する場合はVBAを利用しましょう。
また、ExcelのマクロはVBAでできない処理についても行うことができません。
7.VBAの開発に必要なスキルと注意点
VBAの開発には、どのようなスキルが必要なのでしょうか。ここでは基本知識やスキル、開発における注意点をまとめました。
●VBA開発に必要なスキル
VBA開発には、Excelの基礎知識が必要不可欠です。VBAはExcelを中心としたMS Office製品に特化した言語であるため、Excelの基礎知識は理解しておきたいところです。特に、セルの参照や操作、ワークシートの操作、関数の把握などが重要です。
また、VBAの構文を理解しておく必要があります。プログラミング言語を初めて学ぶ方にとっては不安かもしれませんが、VBAの構文はほかのプログラミング言語と比較すると読みやすいので、学習ハードルは低めです。
加えて、VBAでプログラムを構築する前に、欲しい結果(出力)を考えておく必要があります。そのため、問題解決力やロジック構築能力が求められます。情報の流れや必要な操作など、求めるゴールに必要な構成要素を理解できる力が必要です。
●VBA開発の注意点
VBA開発の注意点として、エラー処理、コードの再利用への考慮が挙げられます。
エラー処理は、プログラム開発において大変重要です。エラーが発生した場合、プログラムが停止したりデータが破損したりする恐れがあるからです。VBA開発に限らず、プログラミングではエラーが起きないようなプログラム設計が必要ですが、開発段階では高確率でエラーに遭遇します。開発を成功させるためには、エラーに対処できるように粘り強さや問題解決力が必要です。
そのほかにも、VBA開発では再利用性を考慮したコーディングが求められます。同じ処理が何度も登場する場合は、関数を使って再利用可能なコードを書くことが可能です。同じ処理はコードを再利用すれば開発工数の削減やメンテナンスが容易になります。効率的に開発するためにも、省略できる作業は省略しましょう。
▷VBAのシステム開発にかかる費用相場は?事前に見積もりが必要?
8.VBAの基本的な使い方
VBAの基本的な使い方について流れに沿ってご説明します。
●Step1:開発タブを表示してVBEを開く
VBAを使用するには初期設定では非表示になっている「開発」タブを表示するような準備が必要です。
Excelを起動して「ファイル」タブを選択してメニューの中から「その他」を選び、「オプション」をクリックしてください。
次に、オプション画面のメニューから「リボンのユーザー設定」を選択し、右側に表示される一覧の中から「開発」にチェックを入れて、OKボタンをクリックします。これで「開発」タブが表示されるようになりました。
開発タブの中にある「Visual Basic」を選べば、別ウィンドウでコード編集ツールのVBE(Visual Basic Editor)が起動します。
●Step2:標準モジュールを挿入する
次にVBAのコードを記述する場所である「標準モジュール」を挿入します。
VBEの画面左端に表示されるプロジェクトエクスプローラーを右クリックするとメニューが表れます。メニューの中から「挿入」を選んで「標準モジュール」を選択します。
すると、VBEの右側スペースに「標準モジュール」のウィンドウが開きます。実際には標準モジュール配下の「Module 1」という項目のウィンドウが開いており、ここにコードを記述していきます。なお、この後「Module 2」「Module 3」と増やしていくことも可能です。
●Step3:コードを入力する
先ほど開いたウィンドウ内にVBAのコードを入力していきます。
今回は、例として「セルA2に50と入力する」という操作を行うコードを入力します。
なお、VBAのプログラムは始めにSub、終わりにEnd Subと記述しており、この一つのまとまりをプロシージャと呼んでいます。
●Step4:プログラムを実行・保存する
コードの記述が完了したら、実際にプログラムを実行してみましょう。
操作画面の上部ツールバーにある、右向きの三角形ボタン(マクロの実行ボタン)もしくは「実行」タブにある「SUB/ユーザーフォームの実行」を押せば、記述したプログラムが実行されます。例えば、上記のコードを実行した場合、A2に50と数字が自動的に入力されます。
プログラムが完成したら、忘れずに保存しておきましょう。Excelファイルを保存することでVBAも保存されますが、そのまま保存しようとすると「マクロなしのブックに保存できません」とエラーが表示されます。VBAを記述したExcelファイルを保存する際には、ファイルの種類を「マクロ有効ブック」に変更することで保存できるようになります。
9.Excelのマクロの基本的な使い方
VBAよりもできることは制限されますが、Excelに備わっている「マクロの記録」を利用して自動化作業を行うこともできます。ここではExcelのマクロの基本的な使い方をご紹介します。
●Step1:開発タブを表示して「マクロの記録」をクリック
VBAの場合と同様に開発タブの表示が必要になります。VBAの場合と同様に、「ファイル」タブのメニューの中から「その他」→「オプション」をクリック。オプション画面のメニューから「リボンのユーザー設定」を選択し、右側の一覧表示の中から「開発」にチェックを入れてOKをクリックし、開発タブを表示させます。
その後、「開発」タブにある「マクロの記録」をクリックしましょう。
すると、「マクロの記録」のダイアログボックスが表示されます。ここでマクロの名前や保存先などを設定します。
なお、保存先は「作業中のブック」「新しいブック」「個人用マクロブック」から選べます。「作業中のブック」や「新しいブック」に保存した場合は、そのブックを開かなければマクロを実行できません。一方、「個人用マクロブック」に保存すると、同じPCであればブックを開かずにマクロを実行できるため、個人で利用する場合は「個人用マクロブック」を選ぶほうが便利といえます。
●Step2:操作手順を記録する
先ほどの「マクロの記録」のダイアログボックスで名前や保存先などを設定した後、「OK」をクリックするとマクロの記録が始まります。
自動化したい操作を実際にExcel上で行いましょう。記録したい操作が完了したら「開発」タブにある「記録終了」をクリックします。これで、自動化したい操作の記録が完了します。なお、操作を間違えた場合は「元に戻す」をクリックすれば修正可能です。
●Step3:マクロを保存する
操作を自動化するマクロを保存する場合は、「マクロの記録」を行ったブックを保存します。
先ほどの保存先で「作業中のブック」や「新しいブック」を選んだ場合は、「ファイル」タブのメニューの中から「名前を付けて保存」を選び、「Excelマクロ有効ブック(*.xlsm)」として保存することになります。「個人用マクロブック」を選択していた場合は、ブックを閉じる際に「個人用マクロブックの変更を保存しますか?」と確認されます。そのまま「保存」をクリックすればマクロを保存できます。。
●Step4:マクロを実行する
最後に、先ほど作成したマクロを実行して、自動化した操作の記録に間違いがないかを確認しておきましょう。
「開発」タブから「マクロ」をクリックすると、「マクロ」のダイアログボックスが表示されます。先ほど作成した「マクロ名」を選んで「実行」をクリックすれば、設定したマクロが実行されます。
「マクロの記録」はVBAと異なり、コードを覚える必要がなく、自動化したい操作を一度再現するだけで済むので、誰でも手軽に自動化の恩恵を受けることができます。
10.VBA開発を外部に依頼する際のポイント
VBA開発を外部に依頼する場合、以下のポイントを押さえることが大切です。
●作業範囲を明確に定める
開発するVBAの機能や目的、使用するデータの種類やサイズ、必要な機能の範囲などを明確にする必要があります。開発においては「要件定義フェーズ」と呼ばれることが多いです。要件定義ができないと、開発に必要な期間や予算を正確に見積もれません。
作業範囲が明確になっていると、開発担当者にとっても作業しやすくなり、想定よりも短期間かつ高品質なプログラムの納品が期待できます。
●使用するExcelのバージョンを明確にする
VBA開発においては、使用するExcelのバージョンを決めておきましょう。Excelは、Microsoft社によって定期的に新バージョンにアップデートされています。バージョンによってVBAの機能や関数などの挙動が異なる場合があるため、開発前にどのバージョンを使用するか決めておきましょう。
特に、Excel2003以前とExcel2007以降のバージョンでは、ファイル形式が変わっているため、互換性に問題が発生する恐れがあります。開発したVBAが社内のパソコンで作動するように、社内のExcelのバージョンを確認しておきましょう。
VBA開発の最適な発注先をスムーズに見つける方法
VBA開発が得意な開発会社選びでお困りではありませんか?
日本最大級のシステム開発会社ポータルサイト「発注ナビ」は、実績豊富なエキスパートが貴社に寄り添った最適な開発会社選びを徹底的にサポートいたします。
ご紹介実績:22,000件(2024年10月現在)
外注先探しはビジネスの今後を左右する重要な任務です。しかし、
「なにを基準に探せば良いのか分からない…。」
「自社にあった外注先ってどこだろう…?」
「費用感が不安…。」
などなど、疑問や悩みが尽きない事が多いです。
発注ナビは、貴社の悩みに寄り添い、最適な外注探し選びのベストパートナーです。
本記事に掲載するシステム会社以外にも、最適な開発会社がご紹介可能です!
ご相談からご紹介までは完全無料。
まずはお気軽に、ご相談ください。 →詳しくはこちら
初めてプロジェクト担当者になった方向け
プロが教える「IT基礎知識・用語集」プレゼント
■VBAに関連した記事