Excelで業務を効率化したいと調べると、「VBA」と「マクロ」という言葉がよく出てきます。
「VBAとマクロって同じもの?」「結局どう違うの?」と混乱する方は多いのではないでしょうか。この2つは密接に関係していますが、指しているものはまったく異なります。
この記事では、VBAとマクロの定義と関係性をわかりやすく整理し、マクロでできること、VBA学習の第一歩までを解説します。
VBAとマクロの違いを一言で整理する
まず結論から整理しましょう。
| 用語 | 正式名称 | 役割 |
|---|---|---|
| VBA | Visual Basic for Applications | Excelを操作するためのプログラミング言語 |
| マクロ | ー | 複数の操作をまとめて自動実行する仕組み |
ひとことで表すなら、VBAは「言語」、マクロは「仕組み」 です。
VBAというプログラミング言語でコードを書き、そのコードを実行して操作を自動化する仕組みがマクロです。つまり、VBAはマクロを作るための手段 という関係になります。
料理に例えるとわかりやすい
少しイメージしにくい方のために、料理で例えてみましょう。
- VBA = レシピ(材料や手順が書かれた指示書)
- マクロ = 自動調理器(レシピ通りに料理を作ってくれる仕組み)
レシピ(VBA)に「野菜を切る → 炒める → 味付けする」と書いておけば、自動調理器(マクロ)がその通りに実行してくれるイメージです。
「マクロの記録」と「VBA」の違い
Excelには「マクロの記録」という機能があります。これはボタン操作だけでマクロを作れる便利な機能ですが、VBAで直接コードを書くのとは別物です。
| 項目 | マクロの記録 | VBAでコードを書く |
|---|---|---|
| 操作方法 | ボタンを押して操作を録画 | コードを手入力 |
| プログラミング知識 | 不要 | 基本的な文法が必要 |
| 条件分岐・繰り返し | できない | できる |
| 柔軟性 | 録画した操作の再生のみ | 自由自在にカスタマイズ可能 |
| おすすめの場面 | 単純な繰り返し作業 | 複雑な業務の自動化 |
マクロの記録は「操作の録画」なので、「もしA列が空白なら飛ばす」といった条件分岐ができません。こうした柔軟な処理をしたい場合は、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なら数行で実現できます。
Excelマクロでできること5選
VBAでマクロを作ると、具体的にどんなことができるのでしょうか。実務で役立つ代表的な活用例を5つ紹介します。
1. 定型作業の自動化
毎日の売上集計、月次レポートの作成、データの並び替えなど、手順が決まっている作業はマクロで自動化できます。
- 複数シートのデータを1つにまとめる
- 条件に合うデータだけを抽出する
- セルの書式設定やフィルタリングを一括実行する
「手順が同じ作業を繰り返している」と感じたら、マクロ化の候補です。
2. ファイルの一括操作
Excel内の操作だけでなく、ファイルの読み込みや作成もVBAで行えます。
- フォルダ内の全Excelファイルからデータを集約する
- CSVファイルの読み込み・書き出し
- テンプレートから新しいファイルを自動生成する
ファイルを1つずつ開いてコピー&ペーストする作業から解放されます。
3. メールの自動送信(Outlook連携)
VBAからOutlookを操作して、メールの作成・送信を自動化できます。
- 集計結果を定型メールで送信する
- 送信先リストに基づいて一括メール送信する
- 添付ファイルを自動で付けて送信する
毎日の報告メール作成に時間を取られている方にはとくに効果的です。
4. Webからの情報収集
VBAでWebページの情報を取得する「Webスクレイピング」も可能です。
為替レートや商品価格など、定期的に確認しているWebページの情報を自動でExcelに取り込めます。ただし、サイトの利用規約でスクレイピングが禁止されている場合があるため、事前に確認が必要です。
5. ユーザーフォームの作成
VBAでは入力フォーム(ユーザーフォーム)を作ることもできます。
ドロップダウンやボタンを配置した入力画面を作れば、Excel操作に慣れていない人でもかんたんにデータ入力ができるようになります。データの入力ミス防止にも役立ちます。
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つのウィンドウの名前と役割
ステップ2: コードをコピペして動かす
まずは自分でコードを書こうとせず、サンプルコードをコピー&ペーストして動かしてみましょう。「コードを実行すると画面が動く」という体験が、VBA学習のモチベーションになります。
本記事の「VBAで書いたマクロの具体例」セクションのコードを試してみてください。
ステップ3: 業務の「ちょっとした手間」を自動化する
基本がわかったら、実際の業務で「毎回やっている面倒な作業」をひとつ選び、マクロ化に挑戦してみましょう。最初は「セルの値をコピーして別シートに貼り付ける」程度の小さな自動化で十分です。
なお、VBAで作成したマクロを保存するには、ファイル形式を .xlsm(マクロ有効ブック)にする必要があります。通常の .xlsx 形式ではマクロが保存されないため注意してください。
ファイル形式の違いについては、こちらの記事で解説しています。
Excel VBAのファイル形式|.xlsxと.xlsmの違いを解説
まとめ
VBAとマクロの違いをあらためて整理します。
- VBA: Excelを操作するためのプログラミング言語
- マクロ: VBAで書いたコードを実行して操作を自動化する仕組み
- マクロの記録: ボタン操作だけでマクロを作れる機能(条件分岐や繰り返しはできない)
VBAは「プログラミング」という言葉の印象ほど難しくありません。まずは Alt + F11 でVBEを開き、サンプルコードを動かすところから始めてみてください。
小さな自動化を積み重ねていけば、日々の業務が確実にラクになっていきます。
