VBAとは?マクロとの違い、できること、メリット・デメリットを解説

  • 2023.09.08
       
VBAとは?マクロとの違い、メリット・デメリット、できることを解説

VBAとは?

Office製品で動くプログラムを作るためのプログラミング言語

VBA(=Visual Basic for Applications)とは、Microsoft社が開発したプログラミング言語「Visual Basic」を、同じく同社が提供するOffice製品ソフト上で動くプログラムを作成するためのプログラミング言語です。
Windows上で動くプログラムを作成するプログラミング言語、「Visual Basic」と同等の機能を有しているため、「Office製品用のVisual Basic」とイメージするとわかりやすいでしょう。

VBAは簡単なプログラムで複雑な処理を自動化させるために用いられますが、そのなかでも Excel での業務に使用されることが多く、「VBA=Excelの機能」といったイメージがありますが、Microsoft Office に標準搭載されているため、Excel のほかにも Word や PowerPoint、データベース管理システムソフトウェア「Access」などにでも使用可能で、使い方次第でさまざまな業務を効率化できます。

VBAは、言語としての基本的な仕様は共通していますが、具体的な処理や操作方法などは各アプリケーションで異なるので、Excel対応のVBAを「Excel VBA」、Access対応のVBAを「Access VBA」というように呼び分けることもあります。

環境設定がほとんど必要なく、手軽にはじめられ、比較的操作も簡単であることから、エンジニアだけでなく、Officeソフトを活用する人からも人気のある言語です。

VBAのマクロとの違い

VBA とマクロは同じものと思われがちですが、両者は全く異なります。

マクロというと Excel上で処理を自動化する機能というイメージがありますが、本来は「コンピュータの処理を自動化する技術」の総称で、特定の作業を自動化するため、それに必要なコマンドをひとまとめにしたものを指します。

あくまで、マクロは自動化処理を実行、記録するための機能であり、その中身はプログラムです。マクロ機能で操作を記録することで、操作内容がプログラム言語に変換され、プログラムという形で内部に残されます。そして、そのプログラムが VBA というプログラミング言語で記述されているのです。

まとめ

VBA:マクロを作成するための言語
マクロ:VBAで作成したプログラム(機能)

VBEとの違い

VBEはVBAのプログラムコードを記述するための場所、つまりエディタのことです。後ほど説明しますが、ExcelでVBAのコードを書くにはExcelからVBEを立ち上げ、記述していきます。

VBAは悪用されることも

VBAは、ファイルの一部として保存されるので、ファイルを開くと同時に悪意のあるプログラムが自動で実行されるといったものも作れてしまいます。こうしたVBAを使った脅威を回避すには、不用意にファイルを開かないことや、マクロに関するセキュリティ設定をするといったセキュリティ対策が必要になります。

プログラミングの基礎からサイト制作まで
↓実践力が身につくプログラミングスクール↓

ITエンジニアの学校 テックマニアスクール

≫モニター割引キャンペーン実施中!≪

VBAでできること

データ処理の自動化

VBAを使えば、四則演算や検索、集計といった単純な作業を自動化することができます。膨大なデータを一つ一つ手作業で処理する手間が省けることで、大幅に効率を上げられます。
事前にプログラムを作っておくことで処理を一度実行するだけで売上や在庫の管理ができ、便利です。

データ入出力の自動化

Excel で請求書や見積書などを作成する場合、PDF に出力することもありますよね。しかし、出力する数が増えてくるとどうしても時間がかかってしまいます。こういった場合に VBA を使えば入出力を自動化できるため、手間を省けます。
また、データをもとにグラフを自動で作成したり、データによって色を付けたりすることも可能です。

Officeソフト間の連携

VBA は Office製品同士であれば連携して使えます。
たとえば、Excel で作成したグラフを PowerPoint で利用する、Access でデータを読み込み Excel でグラフを作成する、Word に Excel のセルを挿入し、Excel でデータを入力することで Word に反映させる、Excel でメール文を作成し、Outlook で一斉送信するといったこともできます。
このように、ソフト単体でできる処理だけでなく、Office製品同士で連携させることもで、業務の効率化ができるだけでなく、ミスの削減にもつながります。

データ取得の自動化

VBA を使えばスクレイピングも実現できます。スクレイピングとは、Webページ上から情報を抜き出して収集する技術を指します。たとえば、複数のサイトから特定のキーワードを含む記事を抜き出したり、株価情報を定期的に自動で収集したりできます。
ただ、一つ注意点があります。場合によって、スクレイピングは Webサイトに多大な負荷がかかる可能性があるため、スクレイピングを行う場合は注意しましょう。

VBAができないこと・苦手なこと

さまざまな処理を自動化できて万能に見えるVBAですが、機能が可否られていることもあり、できないこともあります。

ワークシートの容量以上のデータ処理

ExcelでVBAを利用する場合、処理できるデータ量はExcelで処理できるデータ量に依存します。Excelのワークシートの最大容量は1,048,576行×16,384列であるため、この容量を超えるデータは処理できません。

また、データ量が多くなるど処理も重くなり、時間もかかるようになります。大量のデータを処理する必要がある場合はデータベースを活用しましょう。

システム開発

VBA はOfficeソフトでの作業を効率化するために開発されたプログラミング言語であるため、officeを使わないことを前提としたアプリケーションやシステムはそもそも開発できません。その場合はRubyや PHP、Python といったプログラミング言語を学ぶのがおすすめです。

サポート外アプリケーション群との連携処理

VBAは、基本的にVBAと親和性のある製品・機能でのみ作動します。Office製品を含む複数のアプリケーションを連携させる場合は効率を考えるとRPAの利用がおすすめです。

文字イメージ認識

VBAには画像認識ライブラリなどがないので、特定の文字列を認識といった処理は苦手です。ただ、OCRとの連携で、取り込んだ画像から文字イメージの認識をすることは可能です。OCRは、「Google Cloud Vision API」や「Google tesseract-ocr」などがあります。

Web情報を中心に取り扱う場合

VBAでスクレイピング(データを抽出)はできますが、Web情報のデータ抽出を中心とする開発には向きません。その場合はRubyや PHP、Python といったプログラミング言語を学ぶのがおすすめです。

VBAのメリット

環境構築が不要

VBA以外のプログラミング言語だと開発にソフトのインストールや各種設定といった開発構築は必須です。その点、VBAはoffice製品に標準搭載されているので、環境構築をする必要がなく、手軽に開発をはじめられます。

初心者にやさしい

上記のOfficeのソフトウェアがインストールされたPCであればだれでもすぐに始められるという点に加え、直感的に理解し易く、実行結果を見ながら記述できるので、初心者にとっても扱いやすく、エンジニアではない人にも使用されています。そのため、インターネット上にも初心者向けに解説されている記事も多いです。

こういった点から、VBAはプログラミング初心者の練習には最適の言語といえます。

人為的ミスが減る

効率化できるだけでなく、手作業が減る分、人為的ミスも起こりにくくなります。

VBAのデメリット

Office製品に用途が限られている

VBA はそもそも、Microsoft office での作業を効率化するために開発されたプログラミング言語であるため、できることは限られています。たとえば、Microsoft office を使用しないことを前提としたアプリケーションやシステム開発できません。はじめから、Microsoft office を使わないと Webアプリケーションなどを開発したいと考えている場合は Rubyや PHP、Python といったプログラミング言語を学ぶのがおすすめです。

データ量の多い開発には向かない

VBA を Excel で利用する場合の処理できるデータ量には上限があります。Excel のワークシートの最大容量(1,048,576行×16,384列)を超えるデータ量は処理できません。
また、データ量が多くなるほど処理に時間がかかってしまいます。大量のデータを扱う場合は適したデータベースを使うのをおすすめします。

Excel VBAでマクロを作成する方法

ここからは、実際にマクロを使う手順について解説します。エクセルでマクロを作成するには、「マクロの記録」という機能を使う方法と、自分でVBAのコードを書くという方法があります。それぞれ解説していきます。

「マクロの記録」はコード不要

ExcelはVBAの基礎を学ぶのに最適だといわれていますが、その理由は「マクロの記録」という機能があることです。

「マクロの記録」は人が行った操作を記録することで自動的にコードに変換する機能です。繰り返し処理や条件分岐などの高度な作業は難しいですが、単純な操作であれば作業を自動化できます。

開発タブが表示されるようにする

「マクロの記録」を利用するには、「開発」タブを表示させる必要があります。初期設定では[開発]タブが非表示になっているので、以下の操作で設定を変更しましょう。

[ファイル]タブの[オプション]をクリックします。

[リボンのユーザー設定]の[開発]項目にチェックマークを入れ、「OK」をクリックします。

Excelのメインタブに[開発]タブが表示されるようになります。

操作を記録する

自動化する操作を記録してマクロを作ります。ここでは家計簿を購入者別に並び替えて集計するマクロを作成します。

メインタブの[開発]タブにある[マクロの記録]をクリックします。

[マクロの記録]のダイアログボックスが表示されるので、任意のマクロ名や保存先を設定します。保存先は「作業中のブック」「新しいブック」「個人用マクロブック」のなかから選べますが、「作業中のブック」「新しいブック」に保存すると、そのブックを開かなければマクロを実行できないので「個人用マクロブック」にするのがおすすめです。同じコンピュータを利用していればわざわざブックを開かなくてもマクロを実行できます。

「OK」をクリックするとマクロの記録が始まります。自動化する操作を実行して記録しましょう。もし操作を間違えた時は「元に戻す」で修正可能です。

購入者別に集計をし、操作が一通り終わったら[記録終了]をクリックします。

マクロを保存する

マクロの記録をしたブックを保存します。「作業中のブック」または「新しいブック」を保存先に指定した場合は、[名前を付けて保存]をクリックし、「Excelマクロ有効ブック(*.xlsm)」を指定して保存します。「個人用マクロブック」を保存先に指定した場合は、ブックを閉じる際に変更を保存するか聞かれるので「保存」をクリックします。

マクロを実行する

作成したマクロを実行するには[開発]タブの[マクロ]をクリックします。

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

マクロが実行されているか確認しましょう。

自分でコードを書く

マクロの記録では対応していない複雑な操作を自動化する場合などには、VBAでプログラムを書いてマクロを作成するという方法もあります。

VBEを起動する

VBAでプログラムを記述するには、VBE(Visual Basic Editor)を起動する必要があります。

メインタブの[開発]タブをクリックし、[Visual Basic]をクリックすると、VBEが別ウィンドウで立ち上がります。

VBEが起動しました。

標準モジュールを挿入する

プログラムを書くための標準モジュールを挿入します。

標準モジュールとは、簡単にいうとコードを書く場所です。

VBEの左端にあるシートのプロジェクトエクスプローラを右クリックするとメニューが表示されます。その中から[挿入]項目から[標準モジュール]項目をクリックします。

標準モジュールのウィンドウが立ち上がります。

コードを入力する

ウィンドウ内にVBAでプログラムを書き込んでいきます。例として、セルB2に「1」と入力するプログラムを書きました。

VBAでは、命令の1つのまとまり「プロシージャ」といいます。上記の[Sub]と[End Sub]で挟まれた部分は「Subプロシージャ」です。これ以外にもさまざまな種類があります。上記の“test”の部分はプロシージャ名で、任意の名前に設定できます。

マクロを実行する

[▶]をクリックすると、マクロが実行されます。

セルB2に「1」と入力されました。

毎日行う必要のあるルーティン業務において、マクロを使うことでその後は記録したプログラムを実行ボタン1つで処理が完了し、大幅な作業時間の短縮につながります。

マクロの利用が難しい場合はRPAという選択肢も

マクロは便利な機能ですが、機能が制限されていたり、専任者がいないという場合には活用しにくいですよね。そういった場合は、RPA(=Robotic Process Automation)の利用を検討するといいでしょう。RPAはPC上で行うさまざまな業務をロボットで自動化させるツールです。

VBA資格

VBA資格とは、ExcelやAccessにおけるVBA操作のスキルレベルを評価する試験です。正式名称は「VBAエキスパート」といい、「ベーシック」とそれよりも難易度の高い「スタンダード」があり、計4種類になります。なお、「Excel VBAスタンダード」と「Access VBAスタンダード」の両方を取得した場合、「スタンダードクラウン」という称号が得られ、デジタル証明書も発行されます。

VBAの勉強方法

書籍やインターネットで学習する方法があります。昨今では、YouTubeなどの動画サイトやエンジニアのコミュニティサイトなども充実していて多くの情報が手に入ります。
そして、より効率的に知識・スキルを習得するには、知識をつけながら実際に手を動かしてみるなど、インプットとアウトプットを繰り返していくことが重要です。特に独学の場合は、有識者に質問ができたりフィードバックをもらえるような環境があると、理解度が深まるでしょう。

ただ、VBAに限らず、ITスキルを身につける際、どうしても課題にぶつかってしまうことはありますよね。特に独学だと、わからない部分をプロに質問できる機会を確保しにくく、モチベーションが続きにくいという側面があります。独学でモチベーションを維持する自信がない人にはプログラミングスクールという手もあります。費用は掛かりますが、その分スキルを身につけやすいです。しっかりと知識・スキルを習得して実践に活かしたいという人はプログラミングスクールがおすすめです。

プログラミングスクールならテックマニアがおすすめ!

ITスキル需要の高まりとともにプログラミングスクールも増えました。しかし、どのスクールに通うべきか迷ってしまう人もいるでしょう。そんな方にはテックマニアをおすすめします!これまで多くのITエンジニアを育成・輩出してきたテックマニアでもプログラミングスクールを開講しています。

<テックマニアの特徴>
・たしかな育成実績と親身な教育 ~セカンドキャリアを全力支援~
・講師が現役エンジニア ~“本当”の開発ノウハウを直に学べる~
・専属講師が学習を徹底サポート ~「わからない」を徹底解決~
・実務ベースでスキルを習得 ~実践的な凝縮カリキュラム~

このような特徴を持つテックマニアはITエンジニアのスタートラインとして最適です。
話を聞きたい・詳しく知りたいという方はこちらからお気軽にお問い合わせください。

終わりに

仕事上で Word や Excel といった Officeソフトを使う機会の多い人にとっては、VBA の学習に向いています。VBA も使いようによっては、業務効率を大きく上げることができます。

     

Otherカテゴリの最新記事