Excelで業務を効率化したいと調べると、「VBA」と「マクロ」という言葉が必ずと言っていいほど出てきます。
「VBAとマクロって同じもの?」「結局どう違うの?」と混乱する方は多いのではないでしょうか。この2つは密接に関係していますが、指しているものはまったく異なります。
この記事では、VBAとマクロの違いと関係性をわかりやすく整理します。さらに、マクロの記録との違いや業務での活用例も解説します。VBAでできること・できないこと、学習の第一歩までを初心者向けにまとめました。読み終えるころには、「VBAとマクロ」という言葉に迷わなくなりますよ。
Excel VBAとマクロの違いを一言で整理する
まず結論から整理しましょう。
| 用語 | 正式名称 | 役割 |
|---|---|---|
| VBA | Visual Basic for Applications | Excelを操作するためのプログラミング言語 |
| マクロ | ー | 複数の操作をまとめて自動実行する仕組み |
ひとことで表すなら、VBAは「言語」、マクロは「仕組み」 です。
VBAというプログラミング言語でコードを書き、そのコードを実行して操作を自動化する仕組みがマクロです。つまり、VBAはマクロを作るための手段 という関係になります。
「VBAでマクロを作る」「VBAでマクロを書く」という言い方をよく見かけるのは、この関係があるからです。両者は対立する概念ではなく、役割が違うだけだと考えてください。
料理に例えるとわかりやすい
少しイメージしにくい方のために、料理で例えてみましょう。
- VBA = レシピ(材料や手順が書かれた指示書)
- マクロ = 自動調理器(レシピ通りに料理を作ってくれる仕組み)
レシピ(VBA)に「野菜を切る → 炒める → 味付けする」と書いておくとします。すると、自動調理器(マクロ)がその通りに実行してくれる、というイメージです。
レシピだけあっても料理はできませんし、自動調理器だけあっても何を作るかわかりません。VBAとマクロは、この2つがセットになって初めて自動化が成り立つ関係なのです。
よく混同される言葉を整理する
VBAとマクロの周辺には、似た言葉がいくつもあります。混乱しやすいので、ここで一度整理しておきましょう。
| 言葉 | 意味 |
|---|---|
| VBA | Excelを操作するプログラミング言語 |
| マクロ | VBAで書いた処理を自動実行する仕組み |
| マクロの記録 | 操作を録画してマクロを自動生成する機能 |
| VBE | VBAのコードを書く専用エディター |
| プロシージャ | Sub から End Sub までの1つの処理単位 |
VBEとプロシージャについては記事の後半で触れます。まずは「VBA=言語」「マクロ=仕組み」という大枠を押さえれば十分です。
「マクロの記録」と「VBA」の違い
Excelには「マクロの記録」という機能があります。これはボタン操作だけでマクロを作れる便利な機能ですが、VBAで直接コードを書くのとは別物です。
| 項目 | マクロの記録 | VBAでコードを書く |
|---|---|---|
| 操作方法 | ボタンを押して操作を録画 | コードを手入力 |
| プログラミング知識 | 不要 | 基本的な文法が必要 |
| 条件分岐・繰り返し | できない | できる |
| 柔軟性 | 録画した操作の再生のみ | 自由自在にカスタマイズ可能 |
| おすすめの場面 | 単純な繰り返し作業 | 複雑な業務の自動化 |
マクロの記録は「操作の録画」なので、「もしA列が空白なら飛ばす」といった条件分岐ができません。こうした柔軟な処理をしたい場合は、VBAでコードを書く必要があります。
マクロの記録は「VBAの自動翻訳機」
ここで知っておくと便利なのが、マクロの記録で作られたものの正体です。じつは、マクロの記録もVBAのコードを生成している のです。
操作を録画すると、Excelが裏側で「その操作をVBAで書くとこうなる」というコードを自動生成します。つまりマクロの記録は、あなたの操作をVBAに翻訳してくれる機能だと言えます。
そのため、こんな使い方ができます。
- まずマクロの記録で操作を録画する
- 生成されたVBAコードをVBEで開いて確認する
- 条件分岐などを手で書き足してカスタマイズする
「VBAをゼロから書くのは難しそう」と感じる方は、マクロの記録で土台を作り、そこに手を加える方法がおすすめです。VBAの書き方を覚える教材としても役立ちます。
マクロの記録について詳しく知りたい方は、こちらの記事を参考にしてください。
Excelのマクロの記録の使い方|ボタン操作だけで自動化する方法
VBAで書いたマクロの具体例
「VBAでマクロを作る」とは具体的にどういうことか、簡単なコード例で見てみましょう。
セルに値を入力するマクロ
以下は、A1セルに「完了」と入力するだけのシンプルなマクロです。
Sub 完了を入力()
Range("A1").Value = "完了" 'A1セルに「完了」と入力
End Sub
Sub から End Sub までがひとつのマクロ(プロシージャ)です。このコードをVBE(Visual Basic Editor)に貼り付けて実行してみましょう。すると、A1セルに「完了」と自動入力されます。
VBAのコードを書く場所であるプロジェクト・モジュール・プロシージャについては、以下の記事で詳しく解説しています。
複数行を処理するマクロ
もう少し実務に近い例を見てみましょう。A列の1行目から10行目までに「済」と入力するマクロです。
Sub 一括入力()
Dim i As Long '繰り返し用の変数
For i = 1 To 10
Cells(i, 1).Value = "済" 'A列のi行目に「済」と入力
Next i
End Sub
For ... Next で繰り返し処理を行っています。マクロの記録ではこうしたループ処理は作れませんが、VBAなら数行で実現できます。
繰り返し処理は自動化の基本中の基本です。詳しい使い方はVBA For~Next文の使い方で解説しています。
条件によって処理を変えるマクロ
VBAの真価は「条件分岐」にあります。次のコードは、B列の点数が80以上なら「合格」、それ以外なら「不合格」をC列に入力する例です。
Sub 合否判定()
Dim i As Long '繰り返し用の変数
For i = 2 To 11
'--- 80点以上なら合格、それ以外は不合格 ---
If Cells(i, 2).Value >= 80 Then
Cells(i, 3).Value = "合格"
Else
Cells(i, 3).Value = "不合格"
End If
Next i
End Sub
If ... Then ... Else で条件によって処理を分けています。「点数が空白の行は飛ばす」といった判断ができるのが、マクロの記録にはないVBAの強みです。
条件分岐の書き方はVBA If文の使い方で基本から解説しています。
Excelマクロでできること
VBAでマクロを作ると、具体的にどんなことができるのでしょうか。実務で役立つ代表的な活用例を紹介します。
1. 定型作業の自動化
毎日の売上集計、月次レポートの作成、データの並び替えなど、手順が決まっている作業はマクロで自動化できます。
- 複数シートのデータを1つにまとめる
- 条件に合うデータだけを抽出する
- セルの書式設定やフィルタリングを一括実行する
「手順が同じ作業を繰り返している」と感じたら、マクロ化の候補です。
2. ファイルの一括操作
Excel内の操作だけでなく、ファイルの読み込みや作成もVBAで行えます。
- フォルダ内の全Excelファイルからデータを集約する
- CSVファイルの読み込み・書き出し
- テンプレートから新しいファイルを自動生成する
ファイルを1つずつ開いてコピー&ペーストする作業から解放されます。
3. メールの自動送信(Outlook連携)
VBAからOutlookを操作して、メールの作成・送信を自動化できます。
- 集計結果を定型メールで送信する
- 送信先リストに基づいて一括メール送信する
- 添付ファイルを自動で付けて送信する
毎日の報告メール作成に時間を取られている方には、とくに効果的です。
4. PDFやファイルの自動出力
請求書や報告書をPDFで保存する作業も、VBAで自動化できます。シート名や日付を使ってファイル名を自動で付けられるため、手作業の保存ミスがなくなります。
請求書・報告書の自動出力は需要が高い活用例です。VBAでシートをPDF出力・自動保存する方法で実例を紹介しています。
5. ユーザーフォームの作成
VBAでは入力フォーム(ユーザーフォーム)を作ることもできます。
ドロップダウンやボタンを配置した入力画面を作れば、Excel操作に慣れていない人でもかんたんにデータ入力ができるようになります。データの入力ミス防止にも役立ちます。
実務シーン別のより具体的な自動化アイデアは、ExcelのVBAで仕事を自動化する方法にまとめています。
VBAでできないこと・苦手なこと
VBAは万能ではありません。「何でもできる」と期待しすぎると、かえって遠回りになることがあります。VBAが苦手とすることも知っておきましょう。
| やりたいこと | VBAの適性 | 補足 |
|---|---|---|
| Excel内の操作の自動化 | 得意 | 最も力を発揮する領域 |
| Officeアプリ(Word・Outlook)の操作 | 得意 | アプリ間連携が可能 |
| 大量データの高速処理 | やや苦手 | Power Queryのほうが速い場合がある |
| Web画面の自動操作 | 苦手 | 専用ツールのほうが安定する |
| スマホやWeb版Excelでの実行 | 不可 | デスクトップ版が前提 |
とくに注意したいのが、Web版のExcel(Excel for the web)ではVBAが動かない 点です。ブラウザ上で自動化したい場合は、後述する「Office Scripts」という別の仕組みを使う必要があります。
NOTE
「とにかく重いデータを高速に整えたい」という用途なら、VBAよりPower Queryのほうが向いていることがあります。データの取り込み・整形に特化した機能で、コードを書かずにマウス操作で設定できます。VBAとPower Queryは競合する技術ではなく、用途で使い分けるものだと考えてください。
VBA・マクロと似た自動化技術との違い
VBAやマクロを調べていると、「Office Scripts」「Power Automate」「生成AI」といった別の自動化技術も目に入ってきます。混乱しないよう、それぞれの位置づけを整理しておきましょう。
| 技術 | 動く場所 | こんな人に向く |
|---|---|---|
| VBA・マクロ | デスクトップ版Excel | Excel内の作業を細かく自動化したい |
| Office Scripts | Web版Excel | ブラウザ上のExcelを自動化したい |
| Power Automate | クラウド全般 | 複数アプリをまたぐ作業を自動化したい |
| 生成AI(Copilotなど) | Excel全般 | コードを書かず指示文で自動化したい |
これらは「どれが正解」というものではありません。自分が使っている環境とやりたいことに合わせて選ぶ のがポイントです。デスクトップ版のExcelでExcel内の作業を自動化するなら、まずはVBA・マクロから始めるのが王道です。
TIP
最近はExcelに搭載された生成AI(Copilot)に「この表を集計して」と日本語で頼むだけで処理できるようになりつつあります。ただし、こまかい条件分岐や定型処理の繰り返しは、いまもVBAのほうが正確で安定します。VBAの知識は当面しっかり役立ちますよ。
VBAは難しい?よくある3つの誤解
「プログラミング」と聞くと身構えてしまう方もいるかもしれません。VBAに関するよくある誤解を3つ解消しておきましょう。
誤解1: 数学ができないと無理
VBAで事務作業を自動化するのに、高度な数学の知識は必要ありません。使うのは足し算・引き算レベルの計算と、条件分岐(もし〜なら)や繰り返し(〜回やる)といった論理的な考え方だけです。
誤解2: すべてを暗記しないといけない
VBAのすべての命令を暗記する必要はありません。基本的な構文を理解していれば、必要なコードはその都度検索して見つけられます。実務でVBAを使っている人の多くも、調べながらコードを書いています。
誤解3: 完成まで時間がかかりすぎる
最初は時間がかかりますが、一度作ったマクロは何度でも使い回せます。たとえば毎日30分かかる作業をマクロ化すれば、年間で約120時間の削減になります。作成に数時間かかっても、すぐに元が取れる計算です。
VBA学習を始めるための3ステップ
VBAに興味が出てきた方のために、学習の始め方を3ステップで整理します。
ステップ1: VBEを開いてみる
VBAのコードを書く場所は「VBE(Visual Basic Editor)」です。Excelで Alt + F11 を押すと開けます。
開発タブが表示されていない場合は、「ファイル → オプション → リボンのユーザー設定」で開発タブにチェックを入れてください。
VBEの画面構成を詳しく知りたい方は、こちらの記事が参考になります。
VBEの画面の見方を図解で解説|6つのウィンドウの名前と役割
開発タブの表示からVBE起動までの手順は、Excel VBA 開発タブを表示する方法でも図解しています。
ステップ2: コードをコピペして動かす
まずは自分でコードを書こうとせず、サンプルコードをコピー&ペーストして動かしてみましょう。「コードを実行すると画面が動く」という体験が、VBA学習のモチベーションになります。
本記事の「VBAで書いたマクロの具体例」セクションのコードを試してみてください。
ステップ3: 業務の「ちょっとした手間」を自動化する
基本がわかったら、実際の業務で「毎回やっている面倒な作業」をひとつ選び、マクロ化に挑戦してみましょう。最初は「セルの値をコピーして別シートに貼り付ける」程度の小さな自動化で十分です。
なお、VBAで作成したマクロを保存するには、ファイル形式を .xlsm(マクロ有効ブック)にする必要があります。通常の .xlsx 形式ではマクロが保存されないため注意してください。
ファイル形式の違いについては、こちらの記事で解説しています。
Excel VBAのファイル形式|.xlsxと.xlsmの違いを解説
TIP
何から手をつければいいか迷ったら、学習の順番をまとめたExcel VBA学習ロードマップが道しるべになります。初めてマクロを作る手順はExcel VBAマクロ入門で具体的に紹介しています。
VBAとマクロに関するよくある質問
最後に、VBAとマクロについて初心者からよく出る質問をまとめておきます。
マクロを使うとウイルスに感染するって本当?
マクロ自体がウイルスではありません。ただし、マクロは自動で処理を実行できるため、悪意あるマクロを仕込んだファイルが出回ったことがあります。そのためExcelは、出所不明のファイルのマクロを初期状態で無効にしています。
自分で作ったマクロや信頼できる相手からのファイルなら、安心して有効化して使えます。マクロが有効にならないときの対処はExcelマクロが有効にならない原因と信頼設定の直し方を参考にしてください。
マクロが途中で止まらなくなったらどうする?
Esc キーや Ctrl + Break でマクロを中断できます。それでも止まらない無限ループの場合は、段階的な強制終了の手順があります。
詳しい止め方はExcelマクロが止まらない時の強制終了4ステップで解説しています。実行前にファイルを保存しておくと、万一のときも安心です。
マクロの記録だけ覚えれば十分?
単純な繰り返し作業だけなら、マクロの記録でも十分役立ちます。ただし「条件によって処理を変えたい」「複数ファイルをまとめたい」といった一歩進んだ自動化には、VBAの知識が必要です。まずはマクロの記録から始め、物足りなくなったらVBAを学ぶ流れがおすすめです。
まとめ
VBAとマクロの違いをあらためて整理します。
- VBA: Excelを操作するためのプログラミング言語
- マクロ: VBAで書いたコードを実行して操作を自動化する仕組み
- マクロの記録: ボタン操作だけでマクロを作れる機能(条件分岐や繰り返しはできない)
つまり、VBAという「言語」を使ってマクロという「仕組み」を作る、という関係です。両者は対立するものではなく、役割が違うだけだと押さえておけば迷いません。
VBAは「プログラミング」という言葉の印象ほど難しくありません。まずは Alt + F11 でVBEを開き、サンプルコードを動かすところから始めてみてください。
小さな自動化を積み重ねていけば、日々の業務が確実にラクになっていきます。学習の順番に迷ったらExcel VBA学習ロードマップを、最初のマクロ作りにはExcel VBAマクロ入門を活用してくださいね。