この記事では、VBAがどんなプログラミング言語なのかを、わかりやすく解説します。
国内におけるIT人材不足の深刻化を背景に、ITエンジニアといったプログラミングスキルがある人材の需要は増し、他の職種に比べ高い報酬を設けるケースが増えてきました。
そんななか、業務や作業の自動化・効率化に活用できるプログラミング言語「VBA」に関心を抱いている人も多いですよね。
ただ、「VBA」や一緒に出てくる「マクロ」などがどういう意味なのか、あいまいな人もいるはず。
そこで、この記事ではVBAとはどんなプログラミング言語なのか、その特徴をマクロとの違いやできることも交え、わかりやすく解説します。Excelでの使用を想定したVBAの基本的な使い方も紹介するので、ぜひ参考にしてください。
- VBAとはWordやExcelの操作をプログラムで行うための言語
- マクロはWordやExcelで行った一連の操作を記録したもの
- VBAの独学には学習サイトと書籍を併用した勉強が効率的
VBAとは?
VBAとは「Visual Basic for Applications」の略で、WordやExcelなどといったMicrosoft officeアプリの拡張機能の総称です。また、上記のプログラムを記述する際に使用される、専用のプログラミング言語を指します。VBAという言葉は、よくプログラミング言語を指す場合に用いられます。
officeアプリ内でしか使用することはできませんが、VBAを用いてプログラムを作成することにより、さまざまな処理の自動化が可能です。
VBAの呼称は、各Microsoft officeアプリで異なります。
- Excel VBA:Microsoft Excelで使用されるVBAを指す
- Word VBA:Microsoft Wordで使用されるVBAを指す
- Access VBA:Microsoft Accessで使用されるVBAを指す
- PowerPoint VBA:Microsoft PowerPointで使用されるVBAを指す
officeユーザーであれば、VBAを活用することで繰り返し作業や定型作業などを自動化でき、業務効率化を目指せるでしょう。
Excel VBAとの違い
「VBA」と「Excel VBA」は、言葉の示す範囲が異なります。
前述したように、VBAはMicrosoft officeアプリの拡張機能の総称です。一方で、Excel VBAとは、あくまでExcelソフト内でVBAを利用する際に使われる呼称です。呼称が異なるだけで、双方の機能は変わりません。
表計算ソフトであるExcelと、Microsoft専用のプログラミング言語であるVBAとの親和性が高いことから、「VBAといえば、ExcelのVBAのこと」だと連想する人も多いのかもしれません。
ExcelにVBAは必要?
VBAのスキルを身につけると、より効率よくExcelを使えるようになります。
簡単なグラフの作成から複雑な統計の計算まで、表計算ソフトのExcelを使えば、数字にまつわる多くの作業が可能です。加えて、VBAの使い方を覚えておけば、反復性や回帰性がある計算や日次や月次で行う処理がある場合、毎回同じ作業を繰り返す必要がなくなります。
VBAを利用すれば、やりたい操作をボタンひとつでできるようになるため、第三者にExcelの細かい使い方を教える必要もありません。結果として、新人研修といった教育にかける人件費や時間の削減にもつながるでしょう。
VBAのスキルを身に着けるメリットを詳しく知りたい人は、次の記事を参考にしてください。
→ VBAのスキルを身に着ける3つのメリットとは?効率化事例も解説
なお、VBAを学びたい気持ちはあるものの本当に自分にあう言語なのか、どう学習を進めればいいのかなどがあいまいな人は「プログラミング学習プラン診断」をお試しください。
かかる時間は1分ほど。4つの質問に答えるだけで、あなたにあう言語や学習プランを診断してもらえます。
効率よくプログラミングを学習したい人は、ぜひ一度お試しください。
\ 4つの質問に答えるだけ /
マクロとは?
マクロとは、アプリ内であらかじめ操作手順を記憶させておくことで、任意のタイミングで一連の操作を実行できる機能のことです。プログラミング言語を用いて操作内容を記述しており、ボタンひとつでいつでも記述した動作を実行できるため、Excelでよく利用されています。
Excelには「マクロの記録」という機能も搭載されており、実際に操作した内容をExcelに記録できます。この機能を活用すれば、難しいプログラミングを行わなくても簡単にExcel作業の自動化が可能です。
他にも、VBAを駆使すれば関数やテーブル、条件付き書式などの機能も動かして、複雑な処理も自動で行えます。WordやPowerPointとの連携も可能なため、VBAを活用してさまざまな業務の自動化が目指せるでしょう。
Excelマクロとの違い
VBAと同様に「マクロ」と「Excelマクロ」では、言葉の示す範囲が異なります。
マクロは、アプリ内で記憶させた操作をボタンひとつで実行できる「機能」の総称です。一方で、Excelマクロは、あくまでExcelソフト内でマクロを利用する際に使われる呼称です。
VBAとの違い
前述したように、マクロはアプリ内で記憶した一連の操作を任意のタイミングで実行できる機能のことです。
一方で、VBAは一連の操作内容をプログラミング言語で記述したもの、もしくは記述するためのプログラミング言語を指します。
VBAとマクロは「VBAを用いてコードを手書きして、マクロを作成する」と覚えれば理解しやすいでしょう。
なお、次の記事ではVBAとの違いも交えマクロの使い方を詳しく解説しているので、よければ参考にしてください。
→ 【VBA入門】マクロの使い方(VBAとマクロの違いも解説)
Excelにおけるマクロの重要性
マクロの使い方を覚えておけば、より効率よくExcelの使用が可能です。
Excelは優秀な表計算ソフトであるため、複雑な処理や計算も行ってくれます。しかし、複雑な操作を毎回入力したり、ほかの人に教えるのが大変な場合もあります。
そこでマクロの機能を活用して操作の記録をしておけば、誰でも利用可能な特定タスクの自動化を実現可能です。
なお、ITの仕事に興味はあるものの、どの職種が自分にあうのかわからない人もいますよね。そんな人は「ITキャリア診断」をお試しください。
かかる時間はたったの1分。5つの質問に答えるだけで、自分にあうIT職種を診断してもらえます。
自身に適した職種が知りたい人は、手軽に試してみると良いですよ。
\ 5つの質問に答えるだけ /
VBAの特徴3つ
ここからは、VBAの特徴を3つ紹介します。
マクロの作成・制御に用いられる
マクロは、Microsoft Office アプリでの一連の操作を自動化するための手段です。これらの操作は、ユーザーが行った動作を記録し、それを再生することで自動化されます。マクロは、繰り返し行われる作業を省略するために便利ですが、基本的にはシンプルなタスク向けです。
Microsoft製品であればソフトを横断した連携が可能となり、Excelに入力したデータをWordに反映させることもできます。日常業務でofficeアプリをよく扱っている企業であれば、さまざまなメリットを享受できるでしょう。
初心者からでも習得しやすい
VBAは初心者でも学習しやすく、特にExcelを業務でよく活用しているのであれば、すぐ実践で扱える点でおすすめです。初心者でも習得しやすい理由を、VBAとPythonのコードを比較しながら解説します。
例えば、ExcelのA1セルに「侍エンジニア」と入力する場合、VBAで記述するコードは次のとおりです。
VBAのサンプルコード: Sub Sample1() Worksheets("Sheet1").Range("A1").Value = "侍エンジニア" End Sub
「Sub マクロ名 ~ End Sub」で囲まれた範囲が、1つのマクロ(処理)です。上に書いたコードをわかりやすく日本語に訳すと、次のようになります。
コード: Worksheets("Sheet1").Range("A1").Value = "侍エンジニア" 日本語訳: シート名(Sheet1)のAIセルに「侍エンジニア」と入力
Excelのシート(Worksheets)名を指定した後、セルの範囲(Range)を指定して、最後にセルに入力する値(Value)を指示しています。Excel専用のプログラミング言語であるため、ほかに記述する必要がなくシンプルな文章のみで実行可能です。
次に、Pythonで記述するコードは次のとおりです。
Pythonのサンプルコード: import openpyxl # ブックを取得 book = openpyxl.Workbook(‘C:\\test\\test.xlsx’) # シートを取得 sheet =book[‘Sheet1’] # セルへ書き込む sheet[‘A1’] = ‘侍エンジニア’
Pythonで同じマクロを作成する場合、はじめにPythonを利用してExcelを操作するためのライブラリを読み込ませる必要があります。ライブラリとは、プログラムに事前に読んでおいてもらう説明書のセットのようなものです。その後、操作対象となるExcelファイルの選択から始めないといけません。
Excelアプリの内部で操作ができるVBAとは違い、Pythonで行う場合は手順が多いです。そのため、短いコードのみで完結するVBAのほうがおすすめだと言えます。
効率よく開発が進められる
VBAを活用すれば、効率よく開発が進められます。
少し難しい内容ですが、VBAはオブジェクト指向のプログラミング言語です。オブジェクト指向とは、作成したプログラムをひとつのオブジェクト(モノ)として考える方法です。作成したプログラムをそれぞれ1つのオブジェクトとして保存し、それらを再利用したり修正をしやすくできます。
例えば、RPGのキャラクターを作成する際、「キャラクターの職業」と「ステータス」という定義を作成します。作成した定義をひとつのオブジェクトとして保存しておけば、あとは「キャラクターの職業」と「ステータス」を組み合わせるだけで、いくつかの違うキャラクターを作成可能です。新しい職業を加えたい場合、「キャラクターの職業」が定義されているオブジェクトを修正するのみで済みます。
このように、VBAはオブジェクト指向のプログラミング言語であるため、初心者でもわかりやすく効率よく開発が進められるでしょう。
次の記事では、オブジェクト指向の基礎知識やを使用の際のメリットを紹介していますので、あわせてご覧ください。
→ オブジェクト指向とは?意味や言語の種類、基礎知識もわかりやすく解説
なお、副業での収入獲得を目指しているものの、どんな仕事が自分に合うかわからない人は「副業診断」をお試しください。
かかる時間はたった1分ほど。5つの質問に答えるだけで、自分にあう副業を診断してもらえます。
自身が取り組みやすい副業で収入を獲得したい人は、ぜひ一度お試しください。
\ 5つの質問に答えるだけ /
VBAでできること・主な用途
VBAを活用すれば、一連の操作をボタンひとつでまとめて実行できるマクロが作成可能です。
例えば、社内の営業成績をエクセルで管理しており、毎月の成績を上司にまとめて報告している仕事をしているとしましょう。報告の時は、営業成績順に並べ替えてデータを提出する決まりになっているとします。
このようなルーチン化している作業をVBAでマクロにすれば、毎月手作業で行う必要がなくなります。
ここからは、VBAの主な用途を4つに厳選して紹介します。
繰り返し作業の自動化
VBAを活用すれば、日常業務において繰り返し行われる作業の自動化が可能です。
例えば、顧客に対して請求書を送付する作業を毎月行うと仮定します。顧客情報一覧と売上が記載されているExcelファイルが別々にある場合、各帳票を手作業で作成するのは時間がかかります。
そこでVBAを活用すれば、自動的に各顧客の売上に対応した帳票をひとつずつ作成、出力が可能です。
手作業でコピーアンドペーストを繰り返して作成する必要がないため、作業時間を短縮可能でミスも起きず、業務効率化に繋がるでしょう。
計算・データ処理の効率化
VBAを活用すれば、計算やデータ処理を効率よく行えます。
特にVBAではユーザー定義関数(UDF)という機能があり、自分で関数を作成し、ワークシート関数のように使用が可能です。一度作成してしまえば何度も再利用でき、修正する際も一部分のみの修正で済みます。
自分の業務に合わせた独自の関数を作成することで、よりニーズに合った処理を実現でき、更なる業務効率化が図れます。
ただし、VBAは処理能力があまり高くありません。膨大なデータを扱う場合、時間がかかってしまうか最悪フリーズしてしまいます。扱うデータ量が多い場合は、他のプログラミング言語を視野に入れるなど、別の対策が必要です。
なお、IT企業への転職や業務・作業の効率化などを見据え、独学でVBAが習得できるか不安な人は「侍エンジニア」をお試しください。
侍エンジニアでは、現役エンジニアと学習コーチの2名体制で学習をサポートしてもらえます。
「受講生の学習完了率98%」「累計受講者数4万5,000名以上」という実績からも、侍エンジニアなら未経験からでも挫折なく転職や効率化が実現できますよ。
\ 給付金で受講料が最大80%OFF /
Officeアプリ間の連携
各OfficeアプリのVBAを駆使すれば、すべてのOfficeアプリを連携させ、一連の作業を自動化できます。
例えば、Accessのデータを元にExcelでグラフを作成し、Wordで配布用資料、PowerPointでスライド資料を作成する作業をボタンひとつで実行可能です。
VBAを用いた自動化は、月次で繰り返されるさまざまな作業を減らし、生産性を向上させられるでしょう。
メールの一括・自動送信
VBAを活用すれば、メールの一括・自動送信を簡単に行えます。
VBAでは、Excel内のVBAからOutlookの機能を呼び出すことも可能です。
日報や月報、メルマガといった定期的に送信するフォーマットが決まっているメールであれば、VBAを活用して自動でメール作成から送信までを実行できます。
毎日、毎月繰り返される作業を自動化できれば、生産性は大幅に向上するでしょう。
VBAができないこと・苦手なこと
VBAでは、次のようにどうしてもカバーしきれない部分や、苦手とする部分も存在しています。
- Microsoft Officeアプリ以外では使用できない
- 他社製品との連携ができない
VBAはMicrosoft officeアプリ専用のプログラミング言語であるため、それ以外の用途で使用できません。
そのため、Googleドキュメントやスプレッドシートなどの外部アプリケーションとの連携を行いたい場合、PythonやJavaなど他の言語を使用する必要があります。
そのほか、他社製品との互換性がないため、社内でOfficeアプリから他社製品に乗り換える場合は、別のプログラミング言語を用いて新たにプログラムを組む必要があります。
なお、VBAを学びたい気持ちはあるものの本当に自分にあう言語なのか、どう学習を進めればいいのかなどがあいまいな人は「プログラミング学習プラン診断」をお試しください。
かかる時間は1分ほど。4つの質問に答えるだけで、あなたにあう言語や学習プランを診断してもらえます。
効率よくプログラミングを学習したい人は、ぜひ一度お試しください。
\ 4つの質問に答えるだけ /
Excel VBAの基本的な使い方
ここからは、Excelソフトで実際にVBAを活用してマクロ作成する基本的な使い方を、6つのステップにまとめて解説します。
- STEP1:開発タブを有効化する
- STEP2:VBAエディタを起動する
- STEP3: 新しいモジュールを挿入する
- STEP4:モジュールにVBAコードを記述する
- STEP5:記述したマクロを実行する
- STEP6:マクロを保存する
今回は、マクロを実行したらA1セルに文字列「侍エンジニアでプログラミングを学ぼう」が入力されるプログラムを作成します。
なお、次の記事ではVBAを始める際の事前準備から作り方、実行方法などを詳しく紹介していますので、あわせてご覧ください。
→ VBAを始める手順とは?事前準備・作り方・実行方法などまとめて解説!
STEP1:開発タブを有効化する
VBAを活用してマクロを作成するには、まず開発タブを有効にする必要があります。画面左上の「ファイル」を選択後、左下にある「オプション」を選択しましょう。
ExcelのオプションウィンドウがPOPしたら「リボンのユーザー設定」を選択、画面右側に表示されている「メイン タブ」内の「開発」にチェックを入れて「OK」を選択します。
メインタブへ「開発」タブが追加されるのを確認しましょう。
STEP2:VBAエディタを起動する
次に、VBAを記述するためのVBAエディタを起動させます。
「開発」タブを選択し「Visual Basic」を選択してください。
STEP3: 新しいモジュールを挿入する
エディタを起動したら、マクロの作成を始めていきます。
まずは、画面左側にあるプロジェクトエクスプローラーを右クリックして、「挿入」→「標準モジュール」の順番で選択してください。
STEP4:モジュールにVBAコードを記述する
新しいモジュールを作成したら、画面中央のコード部分にVBAコードを記述します。今回記述する内容は、実行したらA1セルに文字列「侍エンジニアでプログラミングを学ぼう」が入力されるマクロです。
STEP5:記述したマクロを実行する
VBAコードの記述が完了したら、実際にマクロを実行して動作確認を行います。
ツールバーにある「実行」ボタンを選択してください。
Excelに戻り確認します。A1セルに「侍エンジニアでプログラミングを学ぼう」が入力されていれば成功です。
STEP6:マクロを保存する
マクロが正常に動いたのを確認できたら、作成したマクロを保存します。
ツールバーにある「保存」ボタンを選択してください。
VBAでマクロを作成する基本的な流れは以上です。
VBAの書き方やおすすめの学習方法をより詳しく知りたい人は、次の記事を参考にしてください。
→ ExcelVBAの基礎知識・書き方・おすすめの学習方法を解説
なお、IT企業への転職や業務・作業の効率化などを見据え、独学でVBAが習得できるか不安な人は「侍エンジニア」をお試しください。
侍エンジニアでは、現役エンジニアと学習コーチの2名体制で学習をサポートしてもらえます。
「受講生の学習完了率98%」「累計受講者数4万5,000名以上」という実績からも、侍エンジニアなら未経験からでも挫折なく転職や効率化が実現できますよ。
\ 給付金で受講料が最大80%OFF /
Excelでの作業を自動化するには?
ここからは、作成したマクロを利用してExcelの作業を自動化する方法を解説します。
マクロを作動させる方法はいくつかありますが、ここでは「マクロ起動用のボタン」を作成して、ボタンをクリックした際マクロが作動する手順を紹介します。
まずは、開発タブにある「挿入」から「フォームコントロール」欄にある「ボタン」を選択してください。
マクロの登録ウィンドウが出てきたら、ボタンに登録したいマクロを選択します。今回は前項で作成したマクロ(今回作成したマクロの名前は「samurai_text」)を選択します。
Excelの画面上に、クリックするだけでマクロが自動で作業を行うボタンが作成されました。
作成したボタンをクリックすれば、作成したプログラムが自動で動作します!
作成したマクロを利用してExcelの作業を自動化する方法は以上です。
なお、次の記事ではマクロの使い方を丁寧に解説していますので、併せてご覧ください。
→ 【VBA入門】マクロの使い方(VBAとマクロの違いも解説)
挫折なくVBAの習得を目指すなら
いざ独学でVBAの習得を目指し始めても、勉強の最中に挫折しまっては学習にかけた時間を悔やむだけでなく「思っていたよりも難しいんだな…」とスキルの習得自体を諦めかねません。
仮にわからないことを飛ばしながら勉強を進めたとしても、エンジニアへの就職・転職を実現できる実践的なスキルが身につかなければ、結局後悔することになります。
そこで、おすすめしたいのが「SAMURAI ENGINEER(侍エンジニア)」です。
分割料金 | 一括料金 | 受講期間 |
---|---|---|
4,098円~ | 16万5,000円~ | 1ヶ月~ |
- 転職・副業・独立などの目的に特化したコースあり
- 累計指導実績4万5,000名以上
- 給付金活用で受講料が最大80%OFF
侍エンジニアをおすすめする最大の理由は「挫折しづらい学習環境」にあります。具体的に、侍エンジニアでは
- 現役エンジニア講師によるマンツーマンレッスン
- 現役エンジニアに質問できるオンラインでのQ&Aサービス
- 不安や悩み・勉強の進み具合を相談できる学習コーチ
といったサポート体制を整えているため、学習中に出てきたわからないことや不明点をいつでも相談可能です。「受講生の学習完了率98%」という実績からも、侍エンジニアなら挫折しづらい環境で学習を進められるといえます。
また、侍エンジニアではカウンセリングにて受講生一人ひとりの目的をヒアリングしたうえでカリキュラムを作成するため、限られた受講期間でもセキュリティエンジニアへの就職・転職に必要なスキルだけを効率的に習得可能です。
最短距離で目的を実現できるようカリキュラムが組まれているため、勉強する順番や内容を誤り非効率に時間や手間を費やす心配もありません。
なお、侍エンジニアでは最大80%OFFで受講可能な「給付金コース」を提供中。金銭面での支援を受けつつ、理想のキャリア実現に向けたスキルの習得から、転職活動・就業後のフォローアップ(※1)までを一貫してサポートしてもらえます。
学習と金銭面をどちらもサポートしてくれる侍エンジニアなら、未経験からでも安心してセキュリティエンジニアへの転職や副業での収入獲得などの目的が実現できますよ。
公式サイトで詳細を見るVBAにまつわるFAQ
最後に、VBAにまつわる質問へまとめて回答します。
VBAを学ぶにはどうしたらいいの?
VBAを効率よく学ぶには、VBAの基本的な知識は学びつつ、簡単な動作からで良いのでマクロ作成の回数を増やしていくことが大切です。独学で習得を目指す場合、まずは学習サイトと書籍を併用した勉強が効率的です。
実際に仕事をしているなかで、VBAを活用して自動化したい作業があるでしょう。実際の業務で利用できるマクロ作成を目標とすれば、「アウトプット=1つの作業自動化」が可能です。
業務効率化が達成できるだけでなくモチベーション向上にも繋がり、一石二鳥となります。
次の記事では、VBAの基本的な書き方やおすすめの学習方法を紹介していますので、あわせてご覧ください。
→ VBA初心者必見!おすすめの勉強方法4つと学習のコツを詳しく解説
VBAの習得は就業活動に役立つ?
VBAの習得は、通常業務でOfficeアプリを利用している企業への就業活動で役立ちます。働き方改革やIT人材不足を背景に、多くの企業では生産性向上を実現するため、業務効率化が推進されています。
そのため、VBAを習得している人材は、就業活動においても役立つスキルだと言えます。
次の記事では、ExcelVBAにまつわる資格について解説していますので、ぜひ参考にしてください。
→ ExcelVBAの資格とは?種類や取得の難易度、役立つかも解説
まとめ
本記事では、VBAとマクロの違いやVBAの特徴、基本的な使い方を紹介しました。
働き方改革やIT人材不足を背景に、多くの企業では生産性向上を実現するため、業務効率化が推進されています。日本の多くの企業にてOffice製品は利用されているため、習得できれば社内での業務効率化に貢献できるでしょう。
通常業務と平行して習得するのは時間や根気が必要となります。独学では不安が残る人は、的確なサポートを受けられるプログラミングスクールを活用し、効率よく学習していくのもおすすめですよ。
なお、下記「マナビタイム」ではVBAでマクロを学ぶおすすめの勉強方法も紹介しているので、よければ併せて参考にしてください。
本記事の解説内容に関する補足事項
本記事はプログラミングやWebデザインなど、100種類以上の教材を制作・提供する「侍テラコヤ」、4万5,000名以上の累計指導実績を持つプログラミングスクール「侍エンジニア」を運営する株式会社SAMURAIが制作しています。
また、当メディア「侍エンジニアブログ」を運営する株式会社SAMURAIは「DX認定取得事業者」に、提供コースは「教育訓練給付制度の指定講座」に選定されており、プログラミングを中心としたITに関する正確な情報提供に努めております。
記事制作の詳しい流れは「SAMURAI ENGINEER Blogのコンテンツ制作フロー」をご確認ください。
この記事の監修者
ITエンジニア
【プロフィール】
システム開発会社・Webマーケティング会社にて勤務。ITエンジニアとして、システム開発や保守業務を担当。現在は、プログラムの開発・保守・IT教育分野を専門に活動中。
【専門分野】
システム開発・保守(Python,PHP,HTML/CSS,JavaScript,SQL,GAS,VB.NET,VBA,COBOL,Pascal など)
IT関連サポート/IT教育
【保有資格】
基本情報技術者
応用情報技術者
ITパスポート試験
【実務経験】
・都市銀行の第三次オンラインシステム開発(Pascal)
・タクシーの営業システム開発・保守(COBOL)
・ホームセンターの営業システム開発・保守(COBOL)
・交通の広告管理システム開発・保守(COBOL,PHP)
・VB.NETやPythonによる業務(旅行・バス・人事・経理・車両整備)の自動化/RPA化
・社内で活用するIT教材の作成(Excel,PowerPoint,スプレッドシート,スライド,Java,AppSeet など)