初心者必見!VBAで何ができる?マクロ、関数についても解説

最終更新日:2024年3月8日

VBAは、Micorsoft社のOfficeシリーズに搭載されているプログラミング言語です。1993年の登場以来、Excel内で業務効率化・小規模なツール開発などに広く用いられてきました。VBAは極めて汎用的なプログラミング言語です。そのため、ITエンジニアか否かを問わず、有用なスキルのひとつといえます。ただし、VBAの仕様としてできること(得意なこと)、できないこと(苦手なこと)があるため、まずはVBAの特性をよく知ることが大切です。ここでは、VBAの初心者の方に向けて、VBAができること、できないことを具体的に解説します。

今もらっている年収は高い?低い?

支援実績10年の登録者データを基にした エンジニア・クリエイター専門 年収診断 無料診断START

この記事のまとめ

  • VBAは、Micorsoft社のOfficeシリーズに搭載されているプログラミング言語
  • VBAを使うことでOffice製品やWeb APIなどとの連携による業務の自動化、効率化ができる
  • VBAは比較的容易に開発できる、作業が効率的に進められるなどのメリットがある

\ITエンジニア・クリエイター専門/

【無料】年収診断をする

\ITエンジニア・クリエイター専門/

【無料】年収診断をする

VBAとは?

まず、VBAの概要について解説します。

VBAの概要

VBAは「Visual basic for applications」の略称で、WindowsOS内での使用を想定された独自言語「VB(Visual basic)」のマクロ版とも言えるMicrosoft社が開発した言語です。VBAは、VBE(Visual Basic Editer=編集用アプリケーション)を使用して記述されます。Officeソフトの機能である「マクロ」作成用のプログラミング言語であり、VBAを活用すると業務効率化ツールを作成できます。

VBAの利用シーン

VBAでできることは多岐にわたり、簡単な業務システムであればVBA単体で構築可能です。そのため、営業や総務、経理といった非IT部門の人材がVBAを使えると、業務効率の向上が見込めます。特にExcel内データの入出力・情報加工・転記処理などで真価を発揮し、バックオフィス部門の業務と相性が良いプログラミング言語です。

VBAとマクロの違い

VBAとマクロは、Excelを始めとするMicrosoft Office製品で自動化に利用される機能です。ただし、VBAはプログラミング言語であり、マクロはアプリケーションの機能である点が異なります。

具体的にVBAは、Office製品内で使用されるマクロの作成に利用されるプログラミング言語です。一方、マクロはOfficeアプリケーション内で、あらかじめ設定された操作手順を自動的に実行する機能を指します。マクロはOffice製品内部で提供される機能であり、専用のプログラム言語ではありません。

関連記事:
VBAとは?将来性や仕事での活用法、マクロとの違いも解説
VBAは転職で有利になる?事務職・エンジニア職のスキルの違いとは

\ITエンジニア・クリエイター専門/

【無料】年収診断をする

\ITエンジニア・クリエイター専門/

【無料】年収診断をする

Excel VBAでできることと制約・限界

次に、VBAでできること、できないことをExcel VBAの観点から解説します。VBAは適切に扱うと様々な業務を効率化できますが万能ではありません。できること、できないことを理解して適切に扱えると良いでしょう。

Excel VBAでできること

Excel VBAでは以下のことができます。
 

  • ・文字列操作、変換:ドキュメント作成やデータ整理の効率化

    ・Webサイト・アプリ上の処理をローカルのVBAプログラム内で実行

    ・入力や印刷など手動作業の自動化

    ・書類の作成や印刷を自動化

    ・データの転記や集計、グラフの作成:データ集計やグラフの作成を自動化

    ・データやファイルの整理や加工

    ・テキスト形式のログファイルを読み込んで解析


以下、それぞれの具体的な内容についてご紹介します。

文字列操作、変換

Excel VBAでは、関数を用いて文字列操作や変換処理を行えます。下記は、主なVBA関数の一例です。

  • ・Int…指定した数値の整数部だけを返す

    ・Join…任意の文字列を区切り文字で結合して返す

    ・MsgBox…メッセージボックスを表示しその結果を返す

    ・hr/ChrB/ChrW…指定した文字コードに対応する文字を返す

    ・CSng…指定した値を数値型(Single)に変換

    ・CStr…指定した値を文字列型(String)に変換

    ・FormatCurrency…システムで定義されている通貨形式で文字列を返す

    ・FormatDateTime…指定した日時形式に沿って文字列を返す

    ・FormatNumber…指定した数値形式に沿って文字列を返す

    ・FormatPercent…パーセント形式で文字列を返す

こうした関数を用いることで、ドキュメント作成やデータ整理を効率化できます。

Web API連携

Web APIを呼び出すことで、Webサイト・アプリ上の処理をローカルのVBAプログラム内で実行できます。具体的には「HTTP REQUEST」という記述で所定のパラメータを設定し、Web APIが実装されているサイト・サービスへ連携のリクエストを送信します。ちなみにWeb APIにはPrivate(要認証)とPublic(認証無し)の2種類があり、Private APIを活用する場合はAPI Keyやパスワードといった認証情報が必要です。

手動入力作業の自動化・効率化

Excel VBAは、手動で行っていた入力作業を自動化できます。例えば、Excelシートにデータを手動入力していた場合、VBAを使った自動化が可能です。また、複数の作業を自動化して効率化できます。例えば、一連の作業をマクロで記録しておいて、必要に応じて実行すると、手動作業に比べて多くの時間を節約できます。

書類の自動作成や印刷

請求書の自動作成(請求データを請求書ひな形に転記)や商品データベースから商品台帳を作成などのドキュメントの自動作成が可能です。Excelベースでひな形が決まっているドキュメントであれば、大抵のものは自動化の対象となるでしょう。
また、Excelを使った印刷にもVBAを活用できます。VBAを使うことで、複数のシートをまとめて印刷したり、印刷範囲を自動的に設定できます。

データの転記や集計、グラフの作成

Excel VBAでは、データの転記や集計、チェックなどの作業を自動化できます。手動で行うとミスや確認漏れが生じる可能性のあるデータの書き写しや集計作業を、VBAを使って自動化することで、作業の速度や正確さが向上します。また、データの空欄や半角・全角のチェックもVBAを利用して行えます。

さらに、Excel VBAを使ってグラフを作成可能です。表の数値をグラフ化することで、見やすくわかりやすい資料を作成できます。

データやファイルの整理や加工

Excel VBAは、ファイルやデータの整理や加工にも利用できます。例えば、ファイル名の一括変換やファイルの一括移動、ファイルを含むフォルダを一度に削除したり、多数のフォルダを一度に作成などです。さらに、Excelのファイル一覧を取得できます。これらの作業を手動で行うと時間がかかり、エラーやミスが起こる可能性がありますが、Excel VBAを使うことで迅速かつ確実に作業を完了できます。

ログの解析

Excel VBAを使うことで、テキストファイルのログを読み込んで解析できます。

ログ解析は、特定の情報を抽出する処理や、統計情報を取得する処理、エラーの特定や原因究明のための詳細な情報の収集などを指します。VBAを使うことで、ログを自動的に読み込んで必要な情報を抽出可能です。これにより、システムの動作状況を迅速に把握でき、問題解決や改善につなげられます。

Microsoft Officeアプリケーションの連携

Excel VBAは、Microsoft Office製品全般で利用可能であり、Excel、Word、PowerPoint、Accessなど、様々なアプリケーション同士を連携できる点が特徴です。これにより、異なるアプリケーション間でのデータの取り扱いや処理を効率的に自動化でき、業務プロセスの効率を向上させます。

例えば、Accessで管理されているデータベースから特定の売上データを取得し、それをExcelを活用して直感的で分かりやすいグラフに変換可能です。このような連携により、ユーザーが膨大なデータから価値ある情報を簡単に抽出し、視覚的に理解しやすい形で表示できます。

Excel VBAでできないこと(制約・限界)

小規模な自動化、効率化では汎用性が高いExcel VBAですが、万能ではありません。特に次のような処理は、Excel VBAが苦手とする分野です。

大容量のデータ処理

Excel VBAの効果が及ぶ範囲は、原則としてExcelのワークシートの最大容量(1,048,576 行×16,384 列)が上限です。そのため、ワークシートに収まらない大容量データの操作・処理は難しいと考えてよいでしょう。

VBA非対応アプリケーションとの連携

Excel VBAはVBAの命令を受け取れる場面でのみ機能します。したがって、外部の命令を受け取れないアプリケーションと連携できません。VBAで外部アプリケーションのGUIを操作できる可能性はありますが、プログラム同士が相互連携しないため、人間の操作を模倣するだけになります。人間の操作を模倣する自動化対策としてはRPAのほうが適切です。

文字イメージ認識などの複雑な処理

VBAは人間の手作業を代行できても「認識を要する作業」は代行できません。AIやOCRのような、画像を認識しデータを取り込む処理は行えません。そういった複雑な処理には、より専門的なプログラミング言語やライブラリが必要です。

他アプリケーションとの相対位置認識が困難

Excel VBA が動作する画面内において、他のアプリケーションの位置を把握できません。このような機能はRPAが得意としているため、RPAを活用しましょう。

\ITエンジニア・クリエイター専門/

【無料】年収診断をする

\ITエンジニア・クリエイター専門/

【無料】年収診断をする

VBAを使うメリット

次に、VBAを使うメリットについて解説します。

開発・運用コストが安い

VBAのメリットの一つは、開発コストも運用コストも安い点です。Excelに標準装備されているため、他のソフトを購入する必要がなく、Excelを購入すればシステム開発できます。

また、VBAの運用に必要なのはExcelを起動する環境だけであり、それ以外の特別な環境や機器は必要ありません。そのため、開発コストも運用コストも安価に抑えられます。ただし、開発者がVBAについての十分な知識を持っていることが前提です。

比較的容易に開発できる

Excel VBAの開発は、他のプログラミング言語に比べて比較的容易と言えます。Excelの操作に慣れている人であれば、マクロの記録や編集も簡単に行えますし、VBAの文法も直感的で理解しやすいです。また、VBAにはExcelの機能に対応したオブジェクトモデルが豊富で、利用すると効率的に開発できます。そのため、プログラミング経験の浅い人でも比較的容易に開発可能です。

作業が効率的に進む

VBAはOffice製品の操作をプログラムによって自動化できるため、複雑な手順や大量のデータ処理を迅速かつ効率的に実行可能です。特にExcelやAccessを使用した数値データの集計や整理などの業務において、VBAによる自動化は非常に効果的です。VBAを活用することで手動作業が削減され、作業を効率的に進められます。

Excelによるデータの集計や管理業務は、様々な企業や組織で行われています。これらをVBAを用いて自動化することで、事務業務の負担を軽減し他の業務により時間を割けます。

他のOffice製品と連携しやすい

VBAを使うメリットとして、他のOffice製品と連携しやすいです。Excel VBAから、WordやOutlook など、他のOfficeアプリのVBAを利用できます。例えば、Excelの表からWordのドキュメントに差し込み印刷をするマクロを作成したり、Excelの表からOutlookメールを作成して、複数のアドレスに一斉送信などを簡単に実装できます。

他のプログラム言語では、このような処理を行うためには多くのコードを書く必要がありますが、VBAはOffice製品との連携が簡単であるため、比較的容易に開発することができます。

データ管理などをマニュアル化しやすい

VBAを利用すれば、特定の個人に依存しないシステムを構築できます。データ管理や書類作成などの業務は属人化が進みやすく、一部の社員に依存すると業務を引き継ぐことが難しくなる等の問題が発生します。

VBAを活用してExcelでデータ処理を自動化すると、複雑なデータ処理手順や書類作成プロセスを誰でも容易に再現できます。これにより、個人に依存せずに業務を進められ、作業の属人化の可能性を軽減可能です。

VBAを導入しデータ管理などをマニュアル化することで、従業員の離職や異動による業務の影響を最小限に抑えつつ、業務プロセスの安定性を確保できます。

\ITエンジニア・クリエイター専門/

【無料】年収診断をする

\ITエンジニア・クリエイター専門/

【無料】年収診断をする

VBAを使うデメリット

一方で、VBAには次のようなデメリットがあります。

Excelのバージョンが変わると利用できないケースがある

VBAを使って作成したExcelマクロシステムは、Excelのバージョンが変わると正常に動作しなくなる場合があります。また、VBAの仕様が変わった場合も、動作しなくなる可能性が考えられます。そのため、Excelのバージョンが変わった際にシステムの修正が必要な場合があります。

複数人での開発ができない

VBAを使用しているExcelファイルは、複数人で同時に編集できません。なぜなら、ファイルを開いた1人のユーザーが編集中に、別のユーザーが同じファイルを開いて変更を加えると、前のユーザーの作業内容が上書きされてしまうためです。共有ブックとしてファイルを作成できますが、多くのユーザーが同時に使用すると同期の問題や競合が発生する可能性があります。そのため、Excelでの複数人での同時編集は制限されており、VBAでは複数人での開発はできません。

複雑な処理の実行速度が遅くなりがち

VBAはExcelの機能を拡張するためのプログラム言語であり、複雑な処理を行えますが、処理が重くなると実行速度が遅くなります。たとえば、大量のデータを処理する場合や、ループ処理を多用する場合などです。また、VBAのコードが複雑になると、デバッグや保守が困難になることもあります。

\ITエンジニア・クリエイター専門/

【無料】年収診断をする

\ITエンジニア・クリエイター専門/

【無料】年収診断をする

Excel VBAの便利な使い方・活用事例

では、実際にExcel VBAを用いた業務効率化・自動化の事例を紹介します。

メールの一括送信

同じOffice製品であるOutlookとの連携によって、Excelシート内にあるメールアドレスに対し、一括でメールを送信できます。特定の条件に合致した顧客に対し、DMやキャンペーンメールを送付する際に便利です。また、Excelワークシートをベースにして、Outlook上の予定表登録作業を自動化することも可能です。

Webリサーチ業務の効率化

「Webスクレイピング」によるWebサイト情報の一括取得とドキュメント化が可能です。複数のサイトから数値などを取得し、報告書などにまとめる際に活用できます。

データ分析・回帰分析

あまり知られていませんが、Excel VBAでも「単純回帰分析」「重回帰分析」が可能です。ただし入門レベルのスキルでは難しいため、ある程度VBAを使いこなせるスキル・経験が必要になります。

\ITエンジニア・クリエイター専門/

【無料】年収診断をする

\ITエンジニア・クリエイター専門/

【無料】年収診断をする

VBAでできること(Excel以外)

最後に、VBAでできることをExcel以外の視点から紹介します。VBAはOffice製品全般で使用可能なプログラミング言語であり、Excel以外でも使用可能です。以下は、Excel以外での活用方法の一例です。

OutlookでのVBA利用
・予定の自動登録
・開いているメールの添付ファイルを自動保存

AccessでのVBA利用
・簡易なデータベースの開発
・在庫管理システム、発注予約システム、検索機能を伴うシステムなどの構築

PowerpointでのVBA利用
・テキストボックスのサイズ設定
・テキストボックスを複数スライドにまとめて作成など

\ITエンジニア・クリエイター専門/

【無料】年収診断をする

\ITエンジニア・クリエイター専門/

【無料】年収診断をする

VBAの便利なコード5選

以下にVBAの便利なコードを5つ紹介します。

メッセージボックスを表示する

このコードは、メッセージボックスを表示し、指定されたメッセージを表示します。これを使用することで、ユーザーにメッセージを表示できます。また、メッセージに変数を含めることも可能です。

コード

MsgBox "Hello, world!"

「ファイルを開く」ダイアログボックスの表示

このコードは、ファイルダイアログボックスを表示し、ユーザーが選択したファイル名を取得します。このコードを実行するとファイル名の入力が不要になります。

コード

Dim FileName As String
With Application.FileDialog(msoFileDialogOpen)
  .AllowMultiSelect = False
  If .Show = -1 Then
   FileName = .SelectedItems(1)
  End If
End With

セルの値をクリアする

このコードは、指定されたセルの値をクリアします。このコードを実行すると、セルの値を手動で削除する必要がなくなります。

コード

Range("A1").ClearContents

シートをコピーする

このコードは、指定されたシートをコピーし、ワークブックの最後に追加します。このコードを実行すると複数のシートを手動でコピーする必要がなくなります。

コード

Sheets("Sheet1").Copy After:=Sheets(Sheets.Count)

セルの色を変更する

このコードは、指定されたセルの背景色を変更します。この例では、赤色に変更しています。このコードを実行すると条件に応じてセルの色を自動的に変更できます。

コード

Range("A1").Interior.Color = RGB(255, 0, 0)

\ITエンジニア・クリエイター専門/

【無料】年収診断をする

\ITエンジニア・クリエイター専門/

【無料】年収診断をする

VBAの将来性

ここで、VBAの将来性について考えてみましょう。

マクロの活用による業務の効率化・自動化

VBAは業務の自動化のツールとして非常に有効で、将来性が高いと言えます。VBAを使って作成されたマクロは、作業時間の削減やエラーの軽減、生産性の向上などに大きな貢献をします。これらの効果によって、多くの企業でVBAを活用することが一般的になっており、VBAを扱える人材は求められています。

さらに、VBAはMicrosoft Office製品に含まれているため、多くの企業で利用されているソフトウェアの一つです。このため、VBAは長期的にも需要があると考えられます。また、VBAは比較的容易に習得でき、自分自身で業務の自動化を行う手段として利用可能性が高いです。

RPA、BIツールなどとの連携によるDXへの対応

RPAやBIツールなどのDXへの対応によってもVBAの将来性は高いといえます。

RPAは、業務プロセスの自動化により、生産性の向上やエラーの削減、業務負荷の軽減などを実現します。VBAは、RPAと連携することで、Office以外からのデータ取得や画像データの認識などを行い、より高度な自動化を実現できます。

また、BIツールと連携することで、VBAを使ってデータの集計や分析を行い、より正確かつ効率的な意思決定を可能にします。これらの連携によって、業務プロセスの最適化やDXへの対応が可能になります。

\ITエンジニア・クリエイター専門/

【無料】年収診断をする

\ITエンジニア・クリエイター専門/

【無料】年収診断をする

VBAに関するよくある質問

最後に、VBAでできることについてのQ&Aを紹介します。同じような悩みを持つ方はぜひ参考にしてください。

Q1. VBAを使うと何ができますか?

VBAを使うことで、ExcelやAccessなどのOffice製品をはじめ、Web APIやRPA、BIツールなどとの連携による業務の自動化、効率化が可能です。具体的には、データの集計や分析、データベースの操作、自動化処理、Webサービスの利用などが挙げられます。

Q2. VBAの活用例を教えてください。

VBAの活用例は以下のようなものがあります。
 

  • ・Excelでのデータの自動集計や自動化処理

    ・Accessでのデータベースの操作や自動化処理

    ・Outlookでのメール送信や受信処理

    ・Wordでのドキュメントの自動生成や操作

    ・PowerPointでのスライドの自動作成や操作

    ・Web APIとの連携によるWebサイトやWebアプリの処理

Q3. VBAを使うメリットは何でしょうか?

VBAを使うメリットは以下のようなものがあります。
 

  • ・業務の自動化・効率化が可能であること。

    ・Office製品を中心に使われているため、広く利用されていること。

    ・プログラミング経験の浅い人でも比較的容易に開発が行えること。

\ITエンジニア・クリエイター専門/

【無料】年収診断をする

\ITエンジニア・クリエイター専門/

【無料】年収診断をする

まとめ

VBAは、Micorsoft社のOfficeシリーズに搭載されているプログラミング言語です。Excel内での業務効率化・小規模なツール開発などのほかに、Office製品全般で活用できます。汎用性の高いスキルであるため、ITエンジニアか否かを問わず、有用なスキルの一つだといえるでしょう。ただし、VBAの仕様として不得手とする領域がある点には注意が必要です。

ITエンジニアの転職ならレバテックキャリア

レバテックキャリアはIT・Web業界のエンジニア職を専門とする転職エージェントです。最新の技術情報や業界動向に精通しており、現状は転職のご意思がない場合でも、ご相談いただければ客観的な市場価値や市場動向をお伝えし、あなたの「選択肢」を広げるお手伝いをいたします。

「将来に向けた漠然とした不安がある」「特定のエンジニア職に興味がある」など、ご自身のキャリアに何らかの悩みを抱えている方は、ぜひ無料のオンライン個別相談会にお申し込みください。業界知識が豊富なキャリアアドバイザーが、一対一でさまざまなご質問に対応させていただきます。

「個別相談会」に申し込む

転職支援サービスに申し込む
※転職活動を強制することはございません。

レバテックキャリアのサービスについて

この記事の監修

レバテックキャリア編集部

レバテックキャリアは、IT/Web業界のエンジニア・クリエイター向けに特化した転職エージェントです。当メディアでは、エンジニア・クリエイターの転職に役立つノウハウから、日々のスキルアップや業務に活かせる情報まで、幅広いコンテンツを発信しています。

プロのアドバイザーがあなたのお悩みや疑問にお答えします

- 転職個別相談会開催中 -

相談内容を選択してください

※転職活動や求人への応募を強制することはありません

関連する記事

人気の求人特集

内定率が高い

VBAの求人・転職一覧

今もらっている年収は高い?低い?

簡単60秒 エンジニア・クリエイター専門 年収診断 無料診断START ×