
「マクロを使えば楽になる」と聞いたものの、マクロとVBAの違いがよくわからない。
そんなモヤモヤを抱えたまま、手作業を続けていませんか。
結論から言うと、マクロは「操作を自動化する機能」、VBAは「その中身を書くプログラミング言語」です。
マクロ記録だけでも定型作業は自動化できますが、条件分岐や繰り返しにはVBAが必要です。
本記事では、Excel/VBA専門のシステム開発会社であるセルネッツが、マクロとVBAの違いを表で整理します。
マクロ記録の手順、できること・できないこと、使う前の注意点まで、実務の目線で解説します。
その定型作業、VBAを覚えなくても自動化できます
- マクロ記録で作ったが、条件が少し変わると動かない
- 前任者が作ったマクロの中身が、社内の誰にもわからない
- VBAを学ぶ時間はないが、毎日の転記や集計は減らしたい
そのお悩み、いま使っているExcelを土台にしたマクロ・VBA開発で解決できます。Excel専門のシステム開発会社『セルネッツ』なら、条件分岐や繰り返しを含む集計・転記・帳票作成までVBAで構築。作りかけのマクロの修正や、引き継ぎができなくなったマクロの改修もご相談いただけます。
\Excel専門特化 × 低価格 × スピード対応/
全国対応・お見積もり無料
マクロとは?Excelの操作を記録して自動で再現する機能
マクロとは、Excelで行う一連の操作を記録し、ボタン1つで再現できる機能です。
「マクロ」とは、マイクロソフト社の Office 製品にもともと含まれる「操作手順の自動記録」機能のことです。
「操作の自動記録」といっても、実際にこの機能を実践活用されている方がどれだけいるでしょうか?とても便利な機能ではありますが、私の知る限り、あまり活用されていないのが実情のようです。その理由は3つあるように思います。
- マクロ機能の「存在」そのものが認知されていない。また、「使い方」がわからない。
- 操作手順が自動記録されるが、あまりに忠実に再現するため、汎用性がない。つまり、記録内容の一部を変更しない限り、流用や応用が利かない。
- 部分修正での挫折。大変便利なものの立派な「プログラミング言語」の為、英語で表示され意味がさっぱり理解できない。
VBAとは?マクロの中身を書くプログラミング言語
VBA(ブイ・ビー・エー)とは、マクロの処理内容を記述するためのプログラミング言語です。
マクロ言語の実態でもある VBA は、正式には、「Visual Basic for Applications(ビジュアル・ベーシック・フォー・アプリケーションズ)」と称します。
「Basic(ベーシック)」という言葉を一度は聞いたことがあるかも知れませんが、マクロ機能により記録された手順内容は、この VBA という言語によって、Excel 内に記述されるため、「マクロ」とは、機能の名称でもありますが、その実態は、「プログラミング言語」でもあるのです。
VBA は、立派なプログラム言語なので、マクロで出来なかった「条件判定、LOOP 繰り返し、メッセージ処理」をはじめ、フォルダ操作はもちろん、ブックやシート、セルや図形など、Excel で行えるほぼすべての操作を制御することが可能なため、マクロでの限界は、VBA で解決を図ることが、もっともコストのかからない、BEST な選択と言えるでしょう。
ExcelVBA は、その名のとおり、Excel アプリケーション上で動作するプログラミング言語です。
そのため、Excel が正常に動作するパソコン上で、Excel が正常にインストールされていなければ、動作も行えません。
マクロとVBAの違いを表で比較
マクロとVBAは「機能」と「言語」の関係です。
主な違いは次の表のとおりです。
| 比較項目 | マクロ(マクロ記録) | VBA |
| 正体 | 操作を自動化する機能 | マクロの中身を書くプログラミング言語 |
| 作り方 | 操作を記録するだけ | VBE(編集画面)でコードを書く |
| 必要な知識 | ほぼ不要 | プログラミングの基礎 |
| 条件分岐・繰り返し | できない | できる |
| 向いている作業 | 毎回同じ手順の定型作業 | 状況に応じて判断が必要な作業 |
マクロ記録で作った内容も、裏側ではVBAのコードとして保存されています。
つまり、記録したマクロを手直しすることが、VBAを学ぶ第一歩になります。
資格試験の場合は別として、何よりも大切なことは、「両者の違いを的確に説明できるかどうか。」ではなく、「マクロやVBA が、どんな利便性を秘めているかを知ること。」だと私は思います。
マクロ記録でできること・できないこと
マクロ記録は「毎回同じ手順の繰り返し」が得意で、「状況に応じた判断」が苦手です。
- できること:決まったファイル・範囲・列に対する定型作業
- できないこと:条件判定、繰り返し処理、メッセージ表示
マクロ記録で自動化できるのは「特定の」定型作業
- 「特定」の場所の、「特定」のファイルを開く
- 「特定」のデータ範囲を、「特定」のキーで、並べる
- 「特定」の列を、別シートの「特定」の列へ自動で転記する
- 「特定」のデータを元に、「特定」のグラフを生成する
などなど、全てにおいて、「特定の」という但し書きのような文言が付きまとってしまいます。
だからと言って、決して「使えない」訳でもありませんし、膨大なデータを毎日のように一定の処理を行うようなケースでは、たいへん有効な効率化手段にも成り得るわけです。
マクロ記録ではできない3つのこと
- 条件判定:発注元が A 社だったら、特別値引きで計算
- LOOP 繰り返し処理:シート内のデータが無くなるまで、上から順に処理
- メッセージ表示:処理中に、不正データが検出されたら「データが不正です」などメッセージ警告
などが挙げられます。
Excel データ編集や加工、集計などの自動処理では、その一部分だけでも自動化されれば恩恵を得られることもありますが、現場実務において、「条件判定、LOOP 繰り返し、メッセージ処理」は、作業効率化に欠かせない機能であることを、マクロ活用に取り組む方々が実感していることでしょう。
マクロ記録の結果をそのまま使い続けると、処理が遅く直しにくいコードになりがちです。
具体例は並び替え(SORT)をマクロ記録のまま使うと失格になる理由で解説しています。
VBAまで含めた活用範囲はExcelマクロでできること・できないことを徹底解説にまとめています。
マクロ記録でデータ抽出を自動化する手順
マクロ記録は、「開発」タブの表示→記録→保存の3段階で使えます。
はじめに「開発」タブを表示させておきます。
- 「ファイル」→「オプション」を開く
- 「リボンのユーザー設定」を選ぶ
- 右側の一覧で「開発」にチェックを入れ、「OK」を押す
ここでは、以下のようなデータ群(※顧客マスタ)の中から、「都道府県=岐阜県」の方だけを抜き出し、隣のシートに結果を作成する、という処理をマクロ記録した場合を、実際の例でご紹介させていただきます。

※上記のデータは、「デモデータ作成ツール」によりランダム生成された、実在しない情報です。

[OK]ボタンが、[記録開始]ボタンです。
このボタンを押すと、以下の画面が表示され、 [OK]を押した直後から、Excel 上でおこなった全ての動作が、順に記録されます。
記録する手順は次の内容です。
- まず、先頭シートに対し、フィルターを適用します。
- 次に、フィルターの抽出条件に対し、F 列の都道府県が「岐阜県」と指定します。
- 対象データが抽出されるので、表示された内容をコピーします。
- コピーされた内容を、新規シートを作成し、そのシートに貼り付けます。
以上の4つのステップで、特定条件の「データ抽出マクロ」が完成です。

この例では、単純に特定データを抽出するだけでしたが、「データの並び替え」や「指定列の削除」や、「入れ替え」、「書体や文字サイズの変更」など、日頃、Excel で行っている定型作業であれば、記録〜再現が簡単に行えるようになります。
では、記録された内容を見てみましょう。
「岐阜県」以外は、すべて英文で表記されています。これが、VBA そのものであり、まさに、プログラム言語の中身です。
「マクロ記録した操作手順」が、「VBA」という「プログラミング言語」で記述されました。
記録は誰でも簡単に行えるわけですが、この中身を修正する…・という作業は、各ステートメントが何を行っているのか知らなければ、意図したとおりの動作は行えません。

その為、市販の書籍や Web サイトなどを頼りに、学習に取り組むものの、結局、断念してしまうケースが多いのかもしれません。
何故なら、「Basic というプログラミング言語と向き合うことになる」訳ですから、経験や下地がなければ、ストレスを感じることとなるでしょう。 (※補足:岐阜県を東京都に修正するだけで、抽出結果はそれに伴い変更されます。)
記録が終わったら、ファイルは「Excel マクロ有効ブック(*.xlsm)」形式で保存します。
通常の「Excel ブック(*.xlsx)」で保存すると、記録したマクロは保存されません。
VBAが得意な処理と、企業での活用例
マクロ・VBAは、毎日・毎月くり返すExcel作業ほど大きな効果を発揮します。
ここでは実際の活用事例と、得意な処理、部門別の用途を紹介します。
マクロ活用の事例:手作業20分〜1時間の在庫チェックが5秒に
前職で、全社的な「業務改善プロジェクト」が発足された際、特にデスクワークを中心とする総務、経理、営業事務、設計、営業、開発、製造など、事務部門パソコン活用の現状分析を行ったのですが、ある事務部門の女性が「Excel マクロ」を有効活用していたことに、たいへん感心したことがあります。
自動化していた事は、次の処理でした。
- サーバ内の「在庫表」を開き、「商品 A グループ、且つ、数量が指定数以下のアイテム」をフィルター機能で抽出
- 抽出されたデータ群を、別シートにコピー&ペースト
- 作成されたデータ群を日付順・在庫数をキーに並び替え
- 本日の日付をファイル名称にして、自身のパソコンに自動保存。
プログラム経験があるわけでもなく、繁忙期の欠品や出荷トラブルを回避するため、自力で作業効率化に取り組む姿に感心しました。
上記の手順(※計5パターン)を「マクロ」ではなく、手作業で行う場合、Excel に慣れている方で、20分。慣れていない方なら、1時間。マクロ活用なら、5 秒…。
のように、作業性/生産性に大きな差がでてくるのですから、このようなケースでは、マクロはとても強力なツールとなってくれる訳です。
もちろん、人間の手作業ではありませんから、抽出漏れや転記ミスも起きません。抽出結果を確認する手間まで減らせる点で、「マクロ活用」の典型的な成功例だと思います。
この事例は、「マクロで出来ない3つのこと」に影響を受けない処理の自動化だったため、有効活用が行えたと言えるでしょう。
VBA の得意なデータ処理とは?
- データ変換の自動化
例)勘定奉行のデータを弥生会計のフォーマットに変換〜弥生への手入力作業をなくす。 - Excel データの集計
例)アンケート調査結果の自動データ集計や、フォルダ内の全 Excel ファイルの一覧表作成 - Excel 業務のシステム化
例)輸出書類の作成や、不動産契約管理、旅費精算など、集計や帳票作成などの自動化
企業ではどんな部門/用途で活躍?
総務・経理
勤務表、出張旅費/経費/仮払金精算、残業申請書、部門別経費一覧表、支払通知書…。
営業
見積書、請求書、納品書、注文書、売上&予算実績管理表、利益計算書、部門別売上一覧表、製品別利益一覧表、商品/取引先マスタ管理、顧客管理…。
人事、製造・設計
人事考課票、部門別異動管理表、ロット管理一覧表、工程管理表、在庫表、棚卸し管理表、部品管理表、発注先一覧表
業種ごとの具体的な改善の流れは、VBA導入で業務はここまで変わる 業種別の改善成功シナリオ8選で紹介しています。
マクロを使う前に知っておきたい4つの注意点
マクロは便利な反面、保存形式やセキュリティを知らないと「動かない」「開けない」につながります。
使い始める前に、次の4点を押さえておきましょう。
- 保存はマクロ有効ブック(.xlsm)で行う
- インターネットから入手したファイルのマクロはブロックされる
- 作った人しか直せない「属人化」に注意する
- ブラウザ版のExcelではVBAマクロは動かない
保存はマクロ有効ブック(.xlsm)で行う
マクロを含むファイルは、拡張子が「.xlsm」のマクロ有効ブックで保存します。
「.xlsx」で保存するとマクロが消えるため、上書き保存の形式には注意が必要です。
インターネットから入手したファイルのマクロはブロックされる
Windows版のOfficeでは、インターネットから入手したファイルのマクロが既定でブロックされます。
メールの添付ファイルやダウンロードしたファイルが対象で、2022年から順次適用されました。
信頼できる相手のファイルに限り、ファイルのプロパティで「許可する(ブロック解除)」にチェックを入れると実行できます。
送り主が不明なファイルのマクロは、有効にしないでください。
参考:Microsoft Learn「インターネットからのマクロは、Office で既定でブロックされます」
作った人しか直せない「属人化」に注意する
社内で作ったマクロは、作成者の異動や退職で「誰も直せない」状態になりがちです。
パスワードがかかったまま中身を確認できないケースも、開発の現場ではよく見かけます。
コードに説明を残す、仕様書を作るなど、引き継ぎを前提に作ることが大切です。
すでにブラックボックス化している場合の対処は、VBAパスワード解除の重要性とExcelマクロの引継ぎ対策で解説しています。
ブラウザ版のExcelではVBAマクロは動かない
VBAマクロは、Windows版・Mac版のデスクトップExcelで動く仕組みです。
ブラウザで使うExcel(Excel for the web)では、VBAマクロを実行できません。
Web版で自動化したい場合は、「Office スクリプト」という別の仕組みを使います。
ただし、利用には法人向けまたは教育機関向けのライセンスが必要です。
参考:Microsoft Learn「Office スクリプトと VBA マクロの違い」
なぜExcel VBAなのか?他の言語・ツールとの比較
様々なプログラム言語が存在するなかで、何故、「ExcelVBA」なのか?といった言語の選択については、Web アプリケーションや、携帯アプリ、制御ロボット、事務計算など、それぞれ言語誕生の背景から、得意分野というものが存在しますが、
- 開発コスト
- 修正メンテナンス性
- 使用ライセンス料の発生有無
- 取扱いデータ量
などの観点から比較した場合でも、一般的に、Excel 中心の業務を効率化するのであれば、システム開発というよりも、「ExcelVBA ツール活用」で、十分対応できると言っても過言ではないでしょう。
VBAはデスクトップ版のExcelに組み込まれており、追加のライセンス料はかかりません。
開発を外部に任せる場合の費用感は、Excelマクロの外注費用はいくら?3万〜50万円の相場一覧と失敗しない依頼先の選び方を参考にしてください。
マクロとVBAに関するよくある質問
マクロとVBAは同じものですか?
同じではありません。
マクロは操作を自動化する「機能」で、VBAはその中身を書く「言語」です。
日常会話では、VBAで作ったプログラムもまとめて「マクロ」と呼ぶことが多くあります。
マクロを使うのにお金はかかりますか?
かかりません。
マクロ記録とVBAはデスクトップ版Excelに標準で備わっており、特別なライセンスは不要です。
Excel以外のOffice製品でもマクロは使えますか?
使えます。
Word、PowerPoint、AccessなどのOffice製品にもVBAが搭載されています。
たとえばExcelのデータをPowerPointの資料に自動で貼り付けるといった連携も可能です。
まとめ|マクロとVBAの違いを知り、身近な定型作業から自動化しよう
マクロは操作を記録して再現する機能、VBAはその中身を書くプログラミング言語です。
決まった手順の作業ならマクロ記録で、条件判定や繰り返しが必要ならVBAで自動化できます。
マクロは、Excel だけでなく、皆さんにおなじみの「Word」、「PowerPoint」、「Access」にもちゃんと実装されていることをご存じでしたか?
Word は、表計算ソフトと異なり、ワードプロセッサですので、集計やレポート作成などを行う機会は多くありませんが、企業での事務作業の多くは、実は、「定型作業」がたいへん多いことに驚かされます。
PowerPoint の場合は、Excel で作成したグラフや表を貼り付け、自動レイアウトを行うなど、マーケティング調査会社様では広く活用されているようです。
プログラミング経験のない方にとって、本業をよそに片手間で VBA 徹底活用を行うことは、たいへん敷居の高い作業でもありますが、あなたの会社でも、誰に知られることもなく、業務改善に取り組むスタッフがいるかもしれません。
そんな小さな定型作業の効率化に、高額システム投資を行うなんて「もったいない。」というのが私の持論ですが、これを機に、「マクロ機能」の存在を知っていただき、「出来ること」と「出来ないこと」、「苦手なこと」と「得意なこと」を、知ることで、少しでも皆様のお仕事の効率化手法について、ご参考お役立ていただければ幸いに存じます。
お近くに、「マクロ活用」や「小規模システム導入」など、ご相談できるシステム会社様がいらっしゃらない場合は、Excel 専門の弊社まで、お気軽にご連絡をいただければ幸いです。
自分で作るか、プロに任せるか。迷ったらご相談ください
- 作りかけのマクロを、実務で使える形に仕上げたい
- 社内の誰も直せなくなったマクロを引き継いでほしい
- 外注するといくらかかるのか、先に目安を知りたい
セルネッツの参考価格は、データ変換なら8万円〜、集計レポートなら12万円〜、入力フォームを備えた簡易システムでも30万円〜です(いずれも税別)。ご要望を伺ったうえで、マクロ・VBAで解決できること、Excelに向かないことも正直にお伝えします。
\Excel専門特化 × 低価格 × スピード対応/
全国対応・お見積もり無料