「毎週同じ集計表をコピーして書式を整え直している」「印刷設定を何度も同じように変えている」——Excelを使っていると、こうした繰り返し作業が業務の中に積み重なっていきます。Excelのマクロ記録機能を使えば、操作を「録画」してボタン1つで再現できます。プログラミング経験がなくても、マクロの記録とVisual Basic Editor(VBE)の基本を組み合わせることで、業務に使えるマクロが作れます。
本記事では、開発タブの表示からマクロの記録・実行・ショートカットキー割り当てまでの基本操作を解説し、VBEで使うRange・Cells・With構文の基礎も紹介します。実務でよく使う5つのシナリオとコード例、MOS Excel 365 エキスパート(MO-211)の出題ポイントとチェックリストも掲載しているので、試験対策と実務スキルを同時に強化できます。
「開発タブ」を表示してマクロ機能を有効にする
Excelのマクロ機能は「開発タブ」に集約されています。既定では非表示なので、最初に一度だけ設定を変更する必要があります。
- 「ファイル」→「オプション」を開く
- 「リボンのユーザー設定」を選択する
- 右側の「メインタブ」一覧から「開発」にチェックを入れる
- 「OK」をクリックする
リボンに「開発」タブが追加されます。このタブには「マクロの記録」「マクロ」「Visual Basic」「マクロのセキュリティ」など、マクロ操作に必要なすべてのボタンが揃っています。
マクロを記録する(操作の録画)
マクロの記録は「操作を録画する」イメージです。記録開始後にExcelで行った操作が自動的にVBAコードとして保存されます。
- 「開発」タブ→「マクロの記録」をクリックする
- 「マクロ名」を入力する(半角英数字・アンダースコアのみ。スペース不可)
- 「マクロの保存先」を選択する(詳細は下表参照)
- 必要であれば「ショートカットキー」「説明」も入力する
- 「OK」をクリックするとマクロ記録が始まる(ステータスバーの停止アイコンが目印)
- 自動化したい操作を実際に行う
- 「開発」タブ→「記録終了」をクリックして記録を停止する
| 保存先 | 適用範囲 | 用途 |
|---|---|---|
| 個人用マクロブック(PERSONAL.XLSB) | Excelを起動するたびに使用可能 | 汎用的な書式設定・集計マクロなど |
| 作業中のブック | そのブックを開いているときだけ使用可能 | プロジェクト固有・一時的な自動化 |
| 新しいブック | 記録と同時に新規ブックが作成される | マクロ専用ブックとして管理する場合 |
注意:「個人用マクロブック(PERSONAL.XLSB)」に保存したマクロは、同じPCで開くすべてのブックに反映されます。他のPCや同僚と共有する場合は「作業中のブック」を選択し、ブックファイルと一緒に配布します。
記録したマクロを実行する
記録したマクロを実行する方法は3通りあります。用途に応じて使い分けると効率的です。
マクロダイアログから実行する(Alt+F8)
Alt+F8キーを押すか、「開発」タブ→「マクロ」をクリックすると「マクロ」ダイアログが開きます。一覧から実行したいマクロを選択して「実行」ボタンを押すだけです。マクロ名が多い場合は「マクロの保存先」をフィルタリングして絞り込めます。
ショートカットキーに割り当てて即時実行する
記録時に「ショートカットキー」欄で設定するか、記録後に「開発」タブ→「マクロ」→マクロを選択→「オプション」から設定できます。Ctrl+任意のキー(またはCtrl+Shift+任意のキー)で割り当てられます。Excelの既存ショートカットと重複しないキーを選ぶ必要があります。
クイックアクセスツールバーにボタンとして登録する
頻繁に使うマクロは、画面左上のクイックアクセスツールバー(QAT)にボタンとして登録するとワンクリックで実行できます。
- 「ファイル」→「オプション」→「クイックアクセスツールバー」を開く
- 「コマンドの選択」ドロップダウンから「マクロ」を選択する
- 一覧から登録したいマクロを選択し「追加」をクリックする
- 「変更」ボタンでアイコンと表示名をカスタマイズできる
- 「OK」で完了
Visual Basic Editor(VBE)でマクロを確認・編集する
Alt+F11キーを押すか、「開発」タブ→「Visual Basic」をクリックするとVisual Basic Editor(VBE)が開きます。記録したマクロはVBAコードとして保存されており、直接編集することで記録では対応できない処理を追加できます。
マクロコードは「標準モジュール」に保存されます。VBEの左側に表示される「プロジェクトエクスプローラー」で「標準モジュール」→「Module1」(または任意のモジュール名)をダブルクリックすると、コードが右側のコードエディタに表示されます。
記録したマクロの基本的な構造は次の通りです。
Sub 売上表書式整形()
' セルA1:F1のフォントを太字にする
Range("A1:F1").Font.Bold = True
' 背景色を薄い青に設定する(RGB値)
Range("A1:F1").Interior.Color = RGB(173, 216, 230)
End Sub
Sub マクロ名()で始まりEnd Subで終わるのがマクロの基本構造です。行頭に'(シングルクォート)を付けるとコメントになり実行されません。
ExcelのオブジェクトモデルとRange・Cells
ExcelのVBAでは「セルやシートを操作するオブジェクト」を理解することが鍵です。よく使うオブジェクトとプロパティを下表に示します。
| オブジェクト/プロパティ | 意味 | 使用例 |
|---|---|---|
Range("A1") | セルA1を指定する | Range("A1").Value = "合計"(セルに値を入力) |
Range("A1:C3") | A1~C3の範囲を指定する | Range("A1:C3").ClearContents(内容を削除) |
Cells(行, 列) | 数値で行列を指定する | Cells(1, 1).Value = "No."(1行1列目=A1) |
ActiveSheet | 現在選択中のシート | ActiveSheet.Name(シート名を取得) |
ActiveWorkbook | 現在開いているブック | ActiveWorkbook.Save(上書き保存) |
Worksheets("シート名") | シート名でシートを指定する | Worksheets("集計").Activate(シートをアクティブに) |
Selection | 現在選択されているセル範囲 | Selection.NumberFormat = "#,##0"(3桁区切り書式) |
Rangeは文字列でセルを指定するため直感的に使いやすく、Cellsは変数で行列を指定できるため繰り返し処理(Forループ)に向いています。
With構文で記述量を減らす
同じオブジェクトに対して複数のプロパティを設定する場合、With構文を使うとコードが短くなります。
' With構文を使わない場合
Range("A1:D1").Font.Bold = True
Range("A1:D1").Font.Size = 12
Range("A1:D1").Font.Color = RGB(255, 255, 255)
Range("A1:D1").Interior.Color = RGB(0, 70, 127)
' With構文を使う場合(同じ操作を短く書ける)
With Range("A1:D1")
.Font.Bold = True
.Font.Size = 12
.Font.Color = RGB(255, 255, 255)
.Interior.Color = RGB(0, 70, 127)
End With
マクロの記録で生成されたコードは冗長になりがちです。VBEで確認し、With構文にまとめることで可読性と保守性が上がります。
実務シナリオ別マクロ5例
シナリオ1:ヘッダー行の書式を一括整形する
受け取ったExcelデータのヘッダー行(1行目)を、フォント・背景色・文字揃えを自社基準に統一するマクロです。記録機能だけで作成できます。
Sub ヘッダー行書式統一()
With Range("A1").CurrentRegion.Rows(1)
.Font.Bold = True
.Font.Size = 11
.Interior.Color = RGB(0, 70, 127)
.Font.Color = RGB(255, 255, 255)
.HorizontalAlignment = xlCenter
End With
End Sub
シナリオ2:数値列に3桁区切りの表示形式を適用する
選択した列全体に3桁区切りの数値書式を適用するマクロです。Selectionを使うことで実行前に選択した範囲に対して動作します。
Sub 金額書式適用()
Selection.NumberFormat = "#,##0"
End Sub
事前に金額の入った列を選択してからマクロを実行するだけで完了します。ショートカットキーに割り当てると特に便利です。
シナリオ3:印刷設定を一括で適用する
毎回同じ印刷設定(用紙A4・横向き・余白・ヘッダー挿入)を手作業で行っている場合、マクロで自動化できます。
Sub 印刷設定一括()
With ActiveSheet.PageSetup
.PaperSize = xlPaperA4
.Orientation = xlLandscape
.LeftMargin = Application.CentimetersToPoints(1.5)
.RightMargin = Application.CentimetersToPoints(1.5)
.TopMargin = Application.CentimetersToPoints(2)
.BottomMargin = Application.CentimetersToPoints(2)
.CenterHorizontally = True
.FitToPagesWide = 1
.FitToPagesTall = False
End With
End Sub
シナリオ4:空白行を一括削除する
データに混在している空白行をまとめて削除するマクロです。ForループとCellsを組み合わせることで、記録では生成できない繰り返し処理を実装します。
Sub 空白行削除()
Dim lastRow As Long
Dim i As Long
lastRow = Cells(Rows.Count, 1).End(xlUp).Row
' 下から上へループして空白行を削除する(上から削除すると行番号がずれるため)
For i = lastRow To 1 Step -1
If Cells(i, 1).Value = "" Then
Rows(i).Delete
End If
Next i
End Sub
「下から上へ」ループするのは、行を削除すると行番号がずれるためです。上から削除すると行をスキップしてしまう誤動作が起きます。
シナリオ5:現在のシートを日付付きブック名で保存する
Sub 日付付きで保存()
Dim filePath As String
filePath = ActiveWorkbook.Path & "\" & _
ActiveSheet.Name & "_" & _
Format(Date, "yyyymmdd") & ".xlsx"
ActiveWorkbook.SaveAs _
FileName:=filePath, _
FileFormat:=xlOpenXMLWorkbook
MsgBox "保存しました:" & filePath
End Sub
シート名と日付を組み合わせてファイル名を自動生成するため、同名ファイルの上書き事故を防ぎながら版管理ができます。
マクロのセキュリティ設定
VBAマクロはコードを実行できる仕組みであるため、外部から受け取ったブックのマクロは無条件で実行しないことが重要です。「開発」タブ→「マクロのセキュリティ」で確認・変更します。
| セキュリティレベル | 動作 | 推奨用途 |
|---|---|---|
| すべてのマクロを無効にする(通知なし) | マクロを一切実行しない。セキュリティバーも表示されない | マクロを使わない環境・高セキュリティ要件の組織 |
| すべてのマクロを無効にする(通知あり)※既定 | マクロを含むブックを開くとセキュリティバーが表示される。ユーザーが手動で有効にできる | 一般ビジネス用途(バランスが良い) |
| デジタル署名されたマクロのみ有効にする | 信頼できる発行元に署名されたマクロのみ実行 | 社内配布マクロに電子署名を使う組織向け |
| すべてのマクロを有効にする | 確認なく全マクロが実行される | マクロ開発・テスト中のみ(通常運用には非推奨) |
自分で作成したマクロを含むブックは「信頼できる場所」に追加することで、毎回の確認ダイアログをスキップできます。「トラストセンター」→「信頼できる場所」に作業フォルダを登録するのが最も手軽な方法です。
また、マクロを含むファイルは拡張子が.xlsm(マクロ有効ブック)になります。通常の.xlsx形式で保存するとマクロが削除されるため、保存時の形式選択に注意が必要です。
MOS Excel 365 エキスパート(MO-211)でのマクロの出題ポイント
MOS Excel 365 エキスパート(MO-211)の出題範囲「高度な機能を使用した数式およびマクロの作成」にはマクロの記録と実行が含まれます。VBAコードの記述は基本的に問われませんが、UIを使った操作手順が問われます。
- 開発タブを表示する手順:「ファイル」→「オプション」→「リボンのユーザー設定」で「開発」にチェック。試験環境では既に表示されている場合もある
- マクロを記録する操作:「開発」→「マクロの記録」→マクロ名入力→OK→操作実行→「記録終了」の一連の流れ
- マクロの保存先の違い:「個人用マクロブック(PERSONAL.XLSB)」と「作業中のブック」の違いと使い分けが問われる
- マクロを実行する方法:Alt+F8でダイアログを開き、対象マクロを選んで「実行」する操作
- ショートカットキーの割り当て:記録時またはマクロのオプションからキーを割り当てる手順
- VBEを開く方法:Alt+F11または「開発」→「Visual Basic」。試験ではコード編集は基本不要
- マクロ有効ブック(.xlsm)で保存する:マクロを含むファイルを保存する際の形式選択
試験時間は50分、採点は1000点満点です。合格点は公表されていませんが550点~850点が目安とされています。MOS Excel 365 エキスパートの学習時間は、アソシエイト(MO-210)合格後に追加で60~100時間が目安(公式非公表)です。
MOS試験 マクロ操作チェックリスト
| 確認ポイント | 操作内容 | 難易度 |
|---|---|---|
| 開発タブを表示する | ファイル→オプション→リボンのユーザー設定→開発にチェック | ★☆☆ |
| マクロを記録する | 開発→マクロの記録→マクロ名入力→操作→記録終了 | ★★☆ |
| マクロの保存先を選ぶ | PERSONAL.XLSBか作業中のブックかを記録時に指定する | ★★☆ |
| マクロをAlt+F8で実行する | Alt+F8→一覧から選択→実行 | ★☆☆ |
| ショートカットキーを割り当てる | 開発→マクロ→オプション→ショートカットキー設定 | ★★☆ |
| QATにマクロボタンを登録する | オプション→クイックアクセスツールバー→マクロ→追加 | ★★☆ |
| VBEでマクロを確認する | Alt+F11→標準モジュール内のコードを確認 | ★★☆ |
| マクロ有効ブックとして保存する | 名前を付けて保存→ファイルの種類で「Excelマクロ有効ブック(.xlsm)」を選択 | ★★☆ |
まとめ:Excelマクロを活用するための5つの基本
本記事のポイントをまとめます。
- 最初は「記録」から始める:プログラミングの知識がなくてもマクロの記録機能だけで多くの繰り返し作業を自動化できる。VBEの編集はその後のステップとして取り組めばよい
- 保存先は用途に合わせて選ぶ:毎日使う汎用マクロは個人用マクロブック(PERSONAL.XLSB)に保存し、特定プロジェクト専用のマクロはそのブック内に保存する。チームで共有する場合はブック内保存で配布する
- Range・Cells・With構文の3点セットを覚える:VBEで記録済みコードを確認するだけでも業務が効率化できる。Range・Cells・Withの基本を押さえれば記録コードの意味が読めるようになり、小さな修正ができるようになる
- 保存形式は.xlsmを忘れずに選ぶ:マクロを含むブックは必ず「Excelマクロ有効ブック(.xlsm)」で保存する。.xlsx形式で保存するとマクロが失われる
- MOS試験は記録・実行・保存先・.xlsm保存の4点を押さえる:開発タブの表示、マクロの記録手順、Alt+F8による実行、保存先の違い、.xlsm形式での保存が頻出。実際のExcelで録画→実行を繰り返し練習することが合格への近道
Excelのマクロは一度覚えると「一生使えるスキル」です。記録機能だけでも書式統一・印刷設定・集計コピーなどの繰り返し作業を大幅に効率化できます。本記事のシナリオを参考に、まず自分の業務でよく行う操作を1つ記録してみることから始めてみてください。
PR
マクロの記録・実行を含むMOS Excel 365 エキスパート(MO-211)の全出題範囲を網羅したテキストと問題集のセット。試験直前の総復習や苦手単元の確認に最適で、本記事のチェックリストと組み合わせて学習効率を高められます。
PR
たった1秒で仕事が片づくExcel自動化の教科書【改訂第3版】
マクロ記録から実践的なVBA活用まで、実務レベルのExcel自動化を体系的に学べる一冊。記録マクロの応用パターンや業務シナリオが豊富で、本記事を読んだ後の次のステップとして最適です。
