Excelの作業をもっと効率化したい、毎日の定型業務を自動化したい。そんな方に役立つのがVBAです。VBAはMicrosoft Officeに搭載されたプログラミング言語で、データの入力や集計、ファイル操作などを自動化できます。
本記事では、VBAの基本的な使い方から、実務で役立つ活用例、学習方法までを初心者向けに解説します。
VBAとは何か

ExcelやAccessなどのMicrosoft Office製品で作業を自動化したいときに使われるのが「VBA」です。手作業の繰り返しや複雑な処理も、VBAを活用すれば簡単に自動化でき、業務の効率化に大きく貢献します。
ここでは、VBAの基本的な仕組みや、よく混同される「マクロ」との違いについて見ていきましょう。
VBAの基本的な定義
VBAとは「Visual Basic for Applications」の略で、Microsoftが提供するOffice製品に組み込まれたプログラミング言語です。
ExcelやWord、Accessなどで、ユーザーが行う一連の操作を自動化するために使われます。特にExcelとの組み合わせでは、データの入力、加工、集計、帳票出力などの作業を効率化する目的で幅広く利用されています。
プログラミング経験がなくても、比較的わかりやすい構文で記述できるのが特徴です。
マクロとの違いを理解しよう
VBAとマクロは混同されがちですが、厳密には役割が異なります。
以下の表で違いを整理してみましょう。
| 項目 | VBA | マクロ |
|---|---|---|
| 役割 | プログラミング言語 | Officeの自動化機能(操作記録ツール) |
| コードの編集 | 手動で自由に書くことができる | 自動記録が基本(手動編集も可) |
| 拡張性 | 高い(条件分岐、繰り返し処理などが可能) | 制限がある(記録できる範囲に依存) |
| 学習の難易度 | やや高め(文法の理解が必要) | 低い(マウス操作だけで記録できる) |
| 利用目的 | 複雑な処理・柔軟な自動化 | 簡単な繰り返し作業の自動化 |
マクロはユーザーが操作した内容をそのまま記録し再生するシンプルな機能ですが、VBAはその内部で動作している本体のような存在です。マクロだけでも簡単な自動化はできますが、より柔軟で複雑な処理を行いたい場合には、VBAの直接編集や記述が必要になります。
マクロよりVBAを使うほうが良い?
マクロは「記録」機能として手軽に使える一方で、操作できる範囲や処理の柔軟性には限界があります。実務で継続的に使う仕組みを作るには、VBAを自分で記述した方が保守性も高く、汎用性のある業務自動化が可能です。
以下の表に、具体的な比較を表で整理しました。
| 比較項目 | VBAの使用 | マクロの使用 |
|---|---|---|
| 自由な処理設計が可能 | 条件分岐やループ、ファイル連携など柔軟に制御できる | 単純な繰り返し操作の記録のみで制限がある |
| 再利用性が高い | 汎用的に書けば別のデータにも流用しやすい | 記録時の手順に依存しやすく流用が難しい |
| 修正がしやすい | 意図を明示したコード構成にできるので保守性が高い | 操作順そのままの記録でコードが複雑になりやすい |
| 他人への引き継ぎ | コメントや構造を整えることで共有しやすい | 記録コードが読みづらく、属人化しやすい |
| 業務との相性 | 本格的な業務ツール化にも対応できる | 一時的な作業自動化や個人使用向け |
マクロは手軽に始められる反面、記録された操作をそのまま繰り返すだけで、複雑な条件や他シート・他ファイルへの対応が難しい場面もあります。
業務に定着させたい処理、複数ユーザーが使う仕組み、あるいは将来的な拡張を考慮するなら、最初からVBAの基本文法に慣れておいた方がスムーズでしょう。
一方で、単発の処理やごく簡単な自動化で済む内容であれば、まずはマクロの記録機能を使って操作を体験し、必要に応じてVBAにステップアップするという進め方もおすすめです。使い方と目的に応じて、賢く使い分けることがポイントです。
VBAを使うメリットとできること
VBAを活用することで、日々の業務は大幅に効率化されます。単なるExcelの自動化にとどまらず、WordやOutlookなど他のOfficeアプリとも連携でき、作業全体の品質とスピードが向上します。
- 業務の自動化と効率化
- 手作業ミスの防止
- 他のOfficeアプリとの連携
ここでは、VBAの使い方によって得られる具体的なメリットや活用例を探っていきましょう。
①業務の自動化と効率化
VBAの使い方を身につけることで、繰り返し行う入力作業や集計作業を自動化でき、作業時間を大幅に短縮可能です。
例えば、請求書の作成、月次レポートの生成、複数シートへのデータ転記など、手作業では時間のかかる処理を一括で実行できます。業務全体の効率が向上し、人的リソースをより付加価値の高い業務に振り向けることが可能になるでしょう。
②手作業ミスの防止
VBAを使った自動処理は、手入力やコピーペーストといった人間の操作に起因するミスを防ぐのに効果的です。
使い方を工夫すれば、入力ルールのチェックやフォーマットの統一も自動化できるため、精度の高いデータ処理が実現します。結果として、作業の再確認や修正にかかる時間も削減できるでしょう。
③他のOfficeアプリとの連携
VBAはExcelだけでなく、WordやOutlook、Accessなど他のMicrosoft Office製品とも連携可能です。
例えば、Excelで管理している顧客情報を使ってOutlookで一斉にメールを送信したり、AccessのデータをExcelに抽出してレポートを自動作成なども。VBAの使い方を覚えることで、複数のアプリケーションをまたいだ業務フローの自動化が実現できます。
VBAをこれから学び始めたい方、あるいは「そもそもVBAって何なのか」をしっかり理解したい方には、VBAの概要やできること・できないこと、マクロとの違いなどが丁寧に整理されている下記の記事が非常におすすめです。特に「どんな業務にVBAを使えるのか」や「他の自動化ツールとの違い」といった疑問に応えてくれる構成になっており、導入前の不安を解消してくれます。まずはVBAというツールの全体像を把握したいという人に最適な内容です。
VBAを使う前に準備すること

VBAを使って業務を自動化するには、まずExcel上でいくつかの初期設定を行う必要があります。初めてVBAを使う方にとって、使い方を理解する前の環境準備は重要なステップです。
この章では、VBAの記述や実行を行うために必要な準備作業を見ていきましょう。
Excelの開発タブを表示する方法
VBAを操作するには、Excelの「開発」タブが必要になります。
このタブは初期状態では非表示のため、以下の手順で表示設定を行います。
- Excelのメニューの「ファイル」をクリックし「オプション」を選ぶ

- 「リボンのユーザー設定」を開き「開発」タブにチェックを入れる

VBAの使い方を学ぶ上で欠かせない「Visual Basic」ボタンや「マクロ」機能が利用できるようになります。
Visual Basic Editor(VBE)の起動方法
VBAコードを記述するためには、Visual Basic Editor(VBE)と呼ばれる専用の画面を使います。
以下の手順で簡単に起動できます。
- 開発タブをクリックし「Visual Basic」を選択する

- VBEが新しいウィンドウで表示される

VBEはVBAの使い方を覚える上での中心的な作業スペースです。ここでコードを書いたり、実行したり、デバッグしたりすることが可能です。エディターの基本的な構成を把握しておくと、今後の学習もスムーズになるでしょう。
基本的なVBAの使い方

VBAは構文がシンプルで、基本的なルールと操作を押さえれば初心者でもすぐに実用的な自動化が可能です。
まずはVBAの書き方や、よく使われる基本コードを理解し、少しずつ応用の幅を広げていくことが大切です。また、VBAに慣れるまではマクロの記録機能を使って、コードの構造を学ぶのも効果的でしょう。
最初に覚えたい構文とルール
VBAでは、処理のまとまりを「プロシージャ」として記述します。
基本的な構文は、Sub で始まり End Sub で終わる形が基本です。
各行には1つずつ命令を書き、文末に記号は不要です。変数を使う場合は事前に宣言することが推奨されており、繰り返しや条件分岐の処理も特定の構文で記述します。最初はシンプルな命令を理解しながら、ルールに慣れていくことがポイントです。
マクロの記録機能の活用
VBAに不慣れなうちは、Excelに備わっている「マクロの記録」機能を使うのがおすすめです。
自分で操作した内容がそのままVBAコードとして記録されるため、どのようにコードが構成されているかを視覚的に理解できます。
- 開発タブを開き「マクロの記録」をクリック

- 通常通りにExcel操作を行う(例:A1セルに文字を入力)

- 「記録終了」をクリック

この機能を活用すれば、VBAの使い方を自然に身につけながら、作業内容をそのまま自動化することができます。手作業でコードを書く前に、まずは記録された内容を読み解くことで、基本構文への理解も深まるでしょう。
基本的なVBAコード一覧
VBAの使い方を身につける第一歩として、まずはよく使う基本コードを理解することが大切です。特にExcel業務では、セル操作やループ処理、条件分岐、メッセージ表示などのコードを覚えることで、日常業務を効率化できます。
ここでは、初心者にも理解しやすい形で目的別に整理した基本コードを整理しました。
| 処理内容 | VBAコード例(概要) |
|---|---|
| セルに文字を入力する | Range(“A1”).Value = “こんにちは” |
| セルの値を別のセルにコピーする | Range(“B1”).Value = Range(“A1”).Value |
| メッセージを表示する | MsgBox “処理が完了しました” |
| 入力ボックスで値を取得する | val = InputBox(“名前を入力してください”) |
| 条件分岐(If文) | If Range(“A1”).Value > 10 Then MsgBox “10より大きいです” |
| 繰り返し処理(For文) | For i = 1 To 5 Range(“A” & i).Value = “テスト” Next i |
| 空欄セルのチェック | If Range(“A1”).Value = “” Then MsgBox “空白です” |
| セルの書式を変更(色や太字など) | Range(“A1”).Font.Bold = True Range(“A1”).Interior.Color = RGB(255, 255, 0) |
| ワークシートを切り替える | Sheets(“Sheet2”).Select |
| 新しいワークシートを追加する | Worksheets.Add |
| セルをクリア(値・書式) | Range(“A1:B10”).ClearContents Range(“A1:B10”).ClearFormats |
| 今日の日付を入力 | Range(“A1”).Value = Date |
| 現在の時刻を入力 | Range(“A1”).Value = Time |
上記の基本的なコードは、VBAの使い方を覚えるうえでの「部品」です。
実務に役立つVBAの使い方

VBAの魅力は、実際の業務にすぐに活かせる汎用性の高さにあります。特にExcelを使った日常業務では、繰り返し作業や複雑な処理をVBAで自動化することで、大幅な時間短縮とミスの削減が可能です。
ここでは、実務で頻繁に使われる具体的なVBAの使い方を、機能別に紹介します。
繰り返し入力の自動化
Excelで同じ内容を複数のセルに連続して入力する作業は、VBAの使い方を覚えると一瞬で自動化できます。
例えば、A1〜A10に「商品1」「商品2」…のように連番をつけたい場合に便利です。
Sub FillCells()
Dim i As Integer
For i = 1 To 10
Range(“A” & i).Value = “商品” & i
Next i
End Sub
上記をVBAに保存したら実行ボタン「▶」押しましょう。

実行結果は下記のように、セルA1〜A10に「商品1」〜「商品10」が順に自動入力されます。

データの自動集計と条件処理
条件を満たす行の件数を自動で数える処理も、VBAを使えば数秒で完了します。
例えば、下記の通り、B列にある売上データから「1万円以上の件数」をカウントできます。
Sub CountSales()
Dim i As Integer, count As Integer
count = 0
For i = 2 To 100
If Range(“B” & i).Value >= 10000 Then
count = count + 1
End If
Next i
MsgBox “売上1万円以上の件数は ” & count & ” 件です”
End Sub
下記のシートに実行してみます。

このコードを使えば、フィルターや関数を使わずにすぐに集計結果を確認できます。

グラフの自動作成
Excelのグラフ作成も、VBAを使えば手作業不要で自動化できます。定型レポートの可視化におすすめです。
例えば、以下のコードのように、ExcelのSheet1にあるA1~A5のそれぞれの数値の名称、B1からB5の数値データを使って、棒グラフを自動で作成できます。
Dim chartObj As ChartObject
Set chartObj = Worksheets(“Sheet1”).ChartObjects.Add(Left:=100, Width:=300, Top:=50, Height:=200)
With chartObj.Chart
.SetSourceData Source:=Range(“A1:B5”)
.ChartType = xlColumnClustered
End With
End Sub
実際に、下記のシートに実行してみましょう。

下記のような棒グラフができます。

同じデータを使っても、ChartTypeを変更することでさまざまなグラフ形状を作成できます。
以下の表は、よく使われるグラフとそのChartTypeの対応一覧です。
| グラフの種類 | 説明 | ChartTypeの指定値 |
|---|---|---|
| 縦棒グラフ(標準) | 比較しやすい基本の棒グラフ | xlColumnClustered |
| 横棒グラフ | 横方向に比較したい場合に便利 | xlBarClustered |
| 折れ線グラフ | 時系列の変化を視覚化するのに最適 | xlLine |
| 面グラフ | 積み重ねて変化の割合を表現 | xlArea |
| 円グラフ | 割合や構成比を表したい場合 | xlPie |
| 散布図 | 座標で数値の関係性を分析するグラフ | xlXYScatter |
| 積み上げ棒グラフ | 各要素の合計と内訳を可視化したいとき | xlColumnStacked |
| 積み上げ面グラフ | 累積の傾向を表す、複数データの比較向け | xlAreaStacked |
ChartTypeを変えるにはこの部分を変更するだけで、簡単にグラフの種類を切り替えられます。
たとえば、円グラフにしたい場合はこう書き換えましょう。
このように、同じデータでも目的に応じてグラフの形式を変更できるのが、VBAを使ったグラフ自動化の大きなメリットです。見せ方や分析の視点に応じて、最適なChartTypeを選びましょう。
Outlookと連携したメール送信
VBAの使い方を発展させれば、Excelからメールを自動で送ることも可能です。定期的な通知やリマインドの自動化に活用できます。
例えば、A列の2~10行目にメールアドレスが一覧で入っている場合、次のようなコードです。
必ずOutlookを起動しておきましょう。Outlookが起動していない場合はエラーになります。
Sub SendMailsFromExcel()
Dim OutlookApp As Object, MailItem As Object
Dim i As Long
Dim lastRow As Long
Dim recipient As String
‘ Outlookを起動
Set OutlookApp = CreateObject(“Outlook.Application”)
‘ 最終行を取得(A列のメールアドレス)
lastRow = Cells(Rows.Count, 1).End(xlUp).Row
‘ 2行目から最終行まで繰り返し
For i = 2 To lastRow
recipient = Cells(i, 1).Value
If recipient <> “” Then
Set MailItem = OutlookApp.CreateItem(0)
With MailItem
.To = recipient
.Subject = “自動送信メール”
.Body = “Excelから送信しました”
.Send
End With
End If
Next i
End Sub
下記のようなシートでの操作しましょう。

こちらはOutlookの送信画面です。すべてのアドレスにメールが送信できています。

Excelの複数行をループでWordに出力する方法
Excelに一覧で入力された複数の氏名を、Word文書の本文に1行ずつ出力したい場合、VBAを使えば簡単に実現できます。
以下のコードでは、ExcelのA列(2行目以降*に入力されたデータを1件ずつ読み取り、Wordに「氏名:○○○○」という形式で出力していきます。
Dim wdApp As Object, wdDoc As Object
Dim lastRow As Long
Dim i As Long
Dim nameValue As String’ Wordを起動し、新しい文書を作成
Set wdApp = CreateObject(“Word.Application”)
Set wdDoc = wdApp.Documents.Add
wdApp.Visible = True’ A列の最終行を取得
lastRow = Cells(Rows.Count, 1).End(xlUp).Row’ 2行目から最終行までループ
For i = 2 To lastRow
nameValue = Cells(i, 1).Value
If nameValue <> “” Then
‘ Wordに1件ずつ「氏名:○○○○」と追記(改行付き)
wdDoc.Content.InsertAfter “氏名:” & nameValue & vbCrLf
End If
Next i
End Sub
下記のシートで試してみましょう。

このコードを実行すると、Wordが自動的に起動して新しい文書が開き、ExcelのA2セル以降に入力されている氏名が順に挿入されていきます。

Excel操作にある程度慣れていて、実践的なVBAの使い方や基本コードを習得したい方には、入門者向けの実践ガイド形式の下記の記事がぴったりです。開発環境の設定からVBEの操作方法、基本構文、テンプレートコードの紹介、さらにエラー対応やデバッグ方法まで、非常に実用的な内容がまとまっています。
VBAの注意点とできないこと

VBAは日常業務を自動化するうえで非常に便利なツールですが、すべての作業や目的に万能というわけではありません。
使い方を誤ると、思わぬトラブルや非効率な運用につながることもあります。また、VBAには技術的な制約もあるため、できることとできないことを理解しておくことが重要です。
ここでは、VBAを使う上で注意すべきポイントと、対応が難しい処理について解説します。
バージョンの違いによる互換性の確保が難しい
VBAはExcelのバージョンによって一部の動作や機能に違いがあり、異なるバージョン間でファイルを共有する際にエラーや不具合が発生することがあります。
古いバージョンでは使えないプロパティやメソッドを含むコードを新しい環境で実行した場合、動作しないことがあります。また、64ビット版と32ビット版でも互換性に注意が必要です。
大量データの処理には時間がかかる
VBAは小規模な自動化には適していますが、数万行を超えるような大量データの処理では、実行速度が極端に遅くなることがあります。
処理が途中で止まったり、Excelが応答しなくなる場合も。そのため、大量データを扱う業務では、Power QueryやPythonなど、より高速な処理が可能なツールの活用を検討しましょう。
複数人での同時開発には向いていない
VBAは主に個人作業向けに設計されており、複数人で同じファイルを同時に編集・開発することが困難です。
バージョン管理や権限管理の仕組みが弱いため、変更内容が上書きされたり、誰がどこを修正したのか分からなくなることがあります。チーム開発や大規模プロジェクトには向いておらず、構成管理が求められる場面では注意が必要です。
AIや画像認識などの高度な処理はできない
VBAはあくまでOfficeアプリケーションの操作を自動化するための言語であり、AIによるデータ分析や画像認識といった高度な処理には対応していません。
近年の業務では、AIを活用した分析や自動分類といったニーズも高まっていますが、そうした処理にはPythonや機械学習ツールの導入が必要です。VBAはシンプルで実用的なツールですが、用途には限界があることを理解しておくべきでしょう。
VBAの将来性とビジネスでの活用

VBAは登場から長い歴史を持つツールですが、今もなお多くの企業や業務現場で使われています。
特に、Excelを中心とした定型作業の自動化においては、VBAの使い方を知っていることが業務効率に直結するケースも少なくありません。一方で、RPAやBIツールなど新しい技術も登場し、VBAの将来性について気になる方も多いはずです。
ここでは、VBAの現在の立ち位置や、今後の活用可能性、ビジネススキルとしての価値について見ていきましょう。
今後の需要とITスキルとしての価値
VBAは決して最新技術ではありませんが、現時点でも多くの企業が日常業務で活用しています。
特に中小企業や非IT部門では、VBAの使い方を理解しているだけで、作業の自動化や品質改善に貢献できる場面が多く存在します。また、他のプログラミング言語と比べても習得のハードルが低いため、「業務+ITスキル」の橋渡しとして非常に有効でしょう。将来的にも、業務の現場で手を動かせる人材として、VBAを扱える人の価値はなくならないと考えられます。
VBAとRPA・BIツールとの違いと連携
RPAやBIツールは、業務自動化やデータ分析の分野で急速に普及していますが、それぞれの役割や強みは異なります。
VBAの使い方は、主にOfficeアプリ内の作業自動化に強みがあるのに対し、RPAは複数のアプリケーションをまたいだ処理、BIツールは可視化や分析に特化しています。しかし、RPAやBIツールとVBAは競合ではなく、連携させることでより大きな効果を発揮するでしょう。
例えば、VBAで整形したデータをRPAで他システムに送る、BIツールの前処理をVBAで行うといった使い方も可能です。
転職・キャリアアップに役立つ
VBAは業務効率化の手段であると同時に、キャリア形成にも役立つスキルです。
特に、事務職や営業職、経理職などでVBAの使い方を習得していれば、社内での評価向上や昇進に直結することもあります。また、「プログラミング経験あり」として履歴書に記載できるため、転職市場でもアピール材料になるでしょう。
さらに、VBAを入口にしてPythonやSQLなどの他の技術に進むことで、キャリアの幅を広げる第一歩にも。業務改善に貢献できるITスキルとして、VBAの価値は依然として高いと言えるでしょう。
VBAの使い方を学ぶおすすめセミナー
VBAの使い方を基礎から実務レベルまで短期間で習得したい方におすすめなのが、GETT Proskillの「Excelマクロ・VBAセミナー」です。この講座は、初心者でも短期間でVBAの基礎から応用操作までを一気に学べる集中型カリキュラムが特徴です。
セミナーの内容は、マクロの記録から始まり、VBAの基本構文、デバッグ、グラフ作成、ユーザーフォームの活用、請求書の自動作成など、幅広く実践的。特に「データ集計」「帳票出力」「自動メール送信」といった現場ニーズの高い使い方に対応しており、受講後すぐに業務へ応用できます。
実務でVBAを活かしたい方、Excelの使い方をより深めたい方にとって、非常に実践的で効率的なセミナーです。詳しくは公式サイトをご覧ください。
セミナー名 Excelマクロ・VBAセミナー 運営元 GETT Proskill(ゲット プロスキル) 価格(税込) 27,500円〜 開催期間 2日間 受講形式 対面(東京・名古屋・大阪)・ライブウェビナー・eラーニング
VBAの使い方を学ぼう
VBAの使い方を知れば、業務の効率化や自動化によって作業時間を大幅に短縮できます。
基本的な使い方を身につけるだけでも、日々の作業が大きく変わることがあります。今後のキャリアアップや業務改善の第一歩として、ぜひVBAの使い方を学び、実務に活かしていきましょう。
小さな自動化からはじめて、あなたの働き方をもっとスマートにしてみてください。