表計算ソフトのExcelには、業務の自動化などに役立つVBAが採用されています。VBAとは、これまで手作業で行っていた作業を自動化できるプログラミング言語です。業務効率を高められる有用な言語ですが、類似した要素であるマクロやRPAとの違いや、どのように活用できるのか認識しておくことが大切です。
この記事では、VBAの概要やマクロ、RPAとの違い、VBAを使ってできることを押さえたうえで、具体的なVBAの使い方を解説します。VBAを活用して業務の効率化を進めたい方は、ぜひ参考にしてください。
- ExcelのVBAとは?
- ExcelのマクロやVBAを使ってできること・できないこと
- Excelのマクロ・VBAを使うには開発タブを表示させておく
- Excelのマクロで自動化する手順
- ExcelのVBAで自動化する手順
- VBAでよく使われるコード
- VBAの活用にはExcelの基礎やプログラミングの知識が必要
- まとめ:ExcelのVBAは生産性を高める便利なプログラミング言語
ExcelのVBAとは?
まずは、VBAの概要やマクロ、RPAとの違いについて解説します。それぞれの役割を認識することで、各要素を適切に活用できるようになります。
ExcelのVBAとは「機能を拡張するプログラミング言語」
ExcelのVBA(Visual Basic for Applications)は、Microsoft Office製品を自動化するためのプログラミング言語です。この言語は、Visual Basicを基にしており、ExcelをはじめとするOffice製品の機能を拡張し、カスタマイズするために設計されています。
VBAを使用することで、日常の繰り返し作業を自動化したり、複雑な計算を簡単に行ったりできます。また、専用の開発環境を準備する必要がなく、Excel内で直接コードを記述・実行できるため手軽に始められます。
VBAは、ほかのプログラミング言語に比べて難易度が低いといわれており、初心者でも挑戦しやすいのも魅力です。豊富なサンプルコードをインターネット上で入手できるため、ニーズに合わせて比較的簡単にカスタマイズできます。
マクロとVBAの違い
ExcelにおけるマクロとVBAは混同されがちですが、明確な違いがあります。マクロはExcelなどのOffice製品で繰り返し行われる作業を効率化し、ボタンクリックやショートカットキーで実行するための機能です。
複雑な作業を簡単に再実行できる点はVBAと同様ですが、マクロはユーザーが行った操作を記録するものであり、より複雑なロジックや条件分岐を必要とする処理を実装するには限界があります。
一方、VBAはプログラミング言語なので、マクロではできない複雑な操作や条件分岐、ループ処理などを自由にプログラミングできます。つまり、マクロはVBAを用いて記述されるスクリプトの一種ということです。
RPAとVBAの違い
RPA(Robotic Process Automation)とは、定型的な業務を自動化する技術です。業務の効率化を図る点はVBAと共通していますが、適用範囲や目的に違いがあります。
RPAは、Microsoft Office製品に限らず、幅広いアプリケーションやソフトウェアの操作を自動化することが可能です。また、直感的に利用できるように設計されているため、プログラミングのスキルがない方でも比較的簡単に業務プロセスの自動化を実現できます。
しかし、RPAの導入には比較的高額なコストがかかる場合が多いため、コストパフォーマンスを考慮する必要があります。一方、VBAはExcelに標準で含まれており、追加のコストは必要ありません。以上の違いを踏まえると、VBAはExcel内の業務を効率化したい場合に適しており、RPAは複数のソフトウェアにまたがる業務プロセスを自動化したい場合に適したツールといえます。
ExcelのマクロやVBAを使ってできること・できないこと
マクロを使ってできることはVBAでもできますが、どのような用途に適しているか把握しておくことで適切に使い分けができます。ここでは、マクロやVBAを使ってできること・できないことを解説します。
マクロを使ってできること
マクロは特定の動作を記憶し、その動作を何度も再現することができるため、決められた書式設定に変更やソートをかけるなど、日々繰り返すようなルーティン作業を自動化でき、仕事の効率化につながります。
これからはじめて処理の自動化を学ぶ人は、最初に「マクロの記録」から学習を進めることをお勧めします。マクロの記憶から始めることで、小難しいプログラミング言語の文法などを覚えることなく、処理の自動化を体験できます。
なお、「マクロの記録」を行う際、セルの位置は絶対参照で記録されますが、相対参照で記録するように変更することができます。
マクロではできないこと
マクロは便利な機能ですが、できることに限界があります。たとえば、マクロは記憶した動作を繰り返すだけなので、特定の条件を満たすまで同じ処理を繰り返し行う「ループ処理」や、条件により処理が変化する「条件分岐」などを記録できません。このような高度な操作を行うには、VBAを使用して直接記述する必要があります。
また、VBAができないことはマクロでもできません。マクロは簡単に作業を自動化できる機能ですが、内部ではVBAでコードが記述されています。そのため、VBAができないことは当然マクロでもできないことになります。
VBAを使ってできること
VBAは、多岐にわたる作業の自動化やMicrosoft Officeの各アプリケーション間でのデータ連携が可能です。
また、プログラミングの知識は必要になりますが「マクロの記録」よりも複雑な処理や繰り返し処理も実装できます。
VBAではできないこと
VBAはExcelをはじめとするOffice製品のためのプログラミング言語なので、外部のアプリとは連携できません。そのため、外部の決済システムや業務管理システムなどと連携して効率化を図るには、ほかの方法を検討する必要があります。
また、ExcelのVBAは大量のデータを処理できないケースもあるため注意が必要です。VBAで対応できる範囲は、Excelのワークシートの最大容量が上限とされています。
さらに、VBAはアプリケーション自体の開発も基本的にできません。あくまでもExcelなどの機能を拡張するものであり、新たにアプリを開発したい場合はほかのプログラミング言語や技術が必要になります。
Excelのマクロ・VBAを使うには開発タブを表示させておく
マクロやVBAを使うには、まずはExcelの開発タブを表示させておく必要があります。初期設定では表示されていないため、下記の手順で表示させておきましょう。
Excelの「ファイル」を選択し、左側のメニューにある「オプション」をクリックする(「オプション」が表示されない場合、「その他」の中にある「オプション」をクリックする)
左側のメニューにある「リボンのユーザー設定」を選択し、「メインタブ」にある「開発」にチェックを入れて、「OK」をクリックする
以上の操作で開発タブが表示されます。
Excelのマクロで自動化する手順
開発タブを表示させたら、実際にマクロを使って自動化を試してみましょう。ここでは、マクロで自動化する手順を3ステップで紹介します。
1|マクロを記録する
まずは、開発タブを開きマクロを記録していきます。操作の手順は次の通りです。
「開発」タブにある「マクロの記録」をクリックする
「マクロの記録」のダイアログボックスが表示されるため、マクロ名の入力と保存先を設定する。(保存先は、ブックを開かずにマクロを実行できる「個人用マクロブック」がおすすめです)
「OK」をクリックすると、マクロの記録が開始するので、記録したい動作を実際に行う
4. 記録したい動作が終了したら、「開発」タブの「記録終了」をクリックする
2|記録したマクロを保存する
次に、マクロを記録したブックをパソコンに保存します。保存する手順は次の通りです。
「ファイル」を選択し「名前を付けて保存」をクリックする
ファイルの種類を「Excelマクロ有効ブック(*.xlsm)」に変更し「保存」をクリックする。(保存先に「個人用マクロブック」を選択すると、「個人用マクロブックの変更を保存しますか?」と記載されたダイアログボックスが表示される場合があるので、「保存」を選択する)
3|保存したマクロを実行する
保存したマクロを実行し、動作に問題がないか確認をしていきます。手順は次の通りです。
「開発」タブにある「マクロ」をクリックする
表示されたダイアログボックスにある保存したマクロを選択し、「実行」をクリックする
マクロが正しく実行されているか確認する
以上がマクロを使って自動化する手順です。一連の流れを覚えてしまえばそれほど時間をかけずに実行できるので、普段行っている作業を自動化してみましょう。
ExcelのVBAで自動化する手順
次に、VBAを使って自動化する手順を解説します。
1|編集者エディター(VBE)を開いて標準モジュールを挿入する
まずは、コードを入力するためにExcelの編集エディター(VBE)を開き、標準モジュールを挿入します。手順は次の通りです。
メインタブの「開発」タブを開いて「Visual Basic」をクリックする
VBEが別のウィンドウで起動する
上部に表示されたメニューの「挿入」→「標準モジュール」を選択する
VBEの左側にあるプロジェクトエクスプローラーに「標準モジュール」と「Mdolule 1」シートが作成される
作成した標準モジュール配下にある「Mdolule 1」シートをダブルクリックすると、VBEの右側にコードを記述するウィンドウが展開する
ここまでの手順で、コードを入力する準備が整いました。
※ 追加したモジュールシートを削除するには、シート名を右クリックし、「Module1 の解放」をクリックしてください。「削除する前にModule1をエクスポートしますか?」と表示されるため、保存する場合は「はい」を、保存しない場合は「いいえ」を選択します。
2|コードを入力してマクロを実行する
最後に、コードを入力して実行していきます。手順は次の通りです。
VBE右側の「Mdolule 1(コード)」ウィンドウ内にコードを入力する
入力が完了したら、ツールバーの「SUB/ユーザーフォームの実行」ボタンもしくは上部メニュー「実行」タブにある「SUB/ユーザーフォームの実行」をクリックし、マクロを実行する
Excelに戻り、問題なく実行されているか確認する
以上の手順で、VBAを使い作業の自動化を実現できます。手順は簡単ですが、VBAを扱える人材がいないと活用できません。
VBAでよく使われるコード
ここからは、VBAでよく使われるコードをご紹介します。コードを記述するウィンドウにコピペをし、実際の業務に応じてカスタマイズし使用してください。
▼ コードの入力、実行方法はこちらセルに値を入力する
以下のコードを記述し実行すると、A1のセルに「こんにちは」と入力されます。
Sub InputValue() ' サブルーチンの開始
Range("A1").Value = "こんにちは" ' セルA1に「こんにちは」という値を入力
End Sub' サブルーチンの終了
ループ処理
以下のコードを記述しを実行すると、A1からA10までのセルに1から10までの数値が順番に入力されます。
Dim i As Integer' 変数iを整数型として宣言
For i = 1 To 10 ' 1から10までのループを開始
Cells(i, 1).Value = i ' i行目の1列目のセルにiの値を入力
Next i' 次のループへ
End Sub' サブルーチンの終了
条件分岐
以下のコードを記述しを実行すると、セルA1の値を取得し、その値が60以上であれば「合格」、60未満であれば「不合格」というメッセージボックスを表示します。
Dim score As Integer ' 変数scoreを整数型として宣言
score = Range("A1").Value ' セルA1の値をscoreに代入
If score >= 60 Then ' scoreが60以上の場合の条件分岐を開始
MsgBox "合格" ' 条件が真の場合、「合格」というメッセージボックスを表示
Else ' scoreが60未満の場合の処理
MsgBox "不合格" ' 条件が偽の場合、「不合格」というメッセージボックスを表示
End If ' 条件分岐の終了
End Sub ' サブルーチンの終了
セルの値をコピー
以下のコードを記述しを実行すると、A1のセルの内容をコピーし、その内容をB1のセルに貼り付けます。
Range("A1").Copy Destination:=Range("B1") ' セルA1の値をセルB1にコピー
End Sub ' サブルーチンの終了
セルの値を貼り付け
以下のコードを記述しを実行すると、B1のセルに値のみを貼り付けます。セルの書式や数式を貼り付けたくない場合に使用します。
Range("B1").PasteSpecial Paste:=xlPasteValues ' セルB1に値のみを貼り付け
End Sub ' サブルーチンの終了
VBAの活用にはExcelの基礎やプログラミングの知識が必要
ExcelのVBAは、データ分析や業務自動化など幅広い領域で効果を発揮しますが、Excelの基本操作や関数に関する理解が不可欠です。
VBAを効果的に使用するためには、セルやワークシートの操作方法はもちろん、Excel固有の関数の使い方など、Excelの基礎知識が必要になります。また、VBAはプログラミング言語の一種なので、基本的なプログラミングの概念、特に構文(言語構造を統制する規則)の理解も欠かせません。
VBAの学習にはさまざまな方法があります。初心者には、基本的なプログラミングの概念を解説した書籍や、VBAに特化した学習サイトの利用がおすすめです。また、実践的なスキルを身につけたい場合は、動画チュートリアルやオンラインスクールでの学習がよいでしょう。
これらの学習ツールを活用し、徐々にVBAの知識を深めることで、Excelの操作を自動化するスクリプトを書けるようになります。
まとめ:ExcelのVBAは生産性を高める便利なプログラミング言語
ExcelのVBAは、定型的な作業の自動化はもちろん、条件分岐やループ処理などを使った複雑な自動化の処理にも対応できるプログラミング言語です。マクロを使えば基本的な作業の自動化はできますが、より自由度を高めるためにはVBAが必要になります。
ほかのプログラミング言語に比べ、難易度が低いといわれている言語なので、作業を効率化させたい方はVBAの活用がおすすめです。
マウスコンピューターは、スペックをカスタマイズできるBTO(Build to Order)パソコンを販売するパソコンメーカーです。パソコンの使用方法やトラブル時の解決方法、パソコンの選び方などを掲載した情報メディアサイト「mouseLABO」を運営しています。パソコンに関する疑問がある方は、ぜひチェックしてみてください。