残業が当たり前になっていませんか?
「手作業での集計」「転記ミスのやり直し」「定型作業の繰り返し」……それ、すべてVBAマクロで自動化できます。
本記事では、筆者が実際に導入し、残業をほぼゼロにした10のVBAマクロをご紹介します。
現場で即使えるサンプル付きなので、今日から時短を実現できます!
✅ この記事でわかること
- 時短に効果的なVBAマクロ10選
- 実務でよくある作業の自動化例
- マクロ導入のステップと注意点
① 複数ファイルを一括で集計するマクロ
用途: 各部署から集めたExcelファイルを1つにまとめたいとき。
Sub 集計マクロ()
Dim wb As Workbook, ws As Worksheet, tgtWs As Worksheet
Dim folderPath As String, fileName As String, lastRow As Long, tgtRow As Long
folderPath = "C:\集計フォルダ\"
Set tgtWs = ThisWorkbook.Sheets("集計結果")
tgtRow = 2
fileName = Dir(folderPath & "*.xlsx")
Do While fileName <> ""
Set wb = Workbooks.Open(folderPath & fileName)
Set ws = wb.Sheets(1)
lastRow = ws.Cells(Rows.Count, 1).End(xlUp).Row
ws.Range("A2:C" & lastRow).Copy tgtWs.Cells(tgtRow, 1)
tgtRow = tgtWs.Cells(Rows.Count, 1).End(xlUp).Row + 1
wb.Close False
fileName = Dir
Loop
End Sub
② 定型メールを自動作成するマクロ(Outlook連携)
用途: 毎日送る「日報」「進捗報告メール」などを自動作成。
Sub メール作成()
Dim olApp As Object, olMail As Object
Set olApp = CreateObject("Outlook.Application")
Set olMail = olApp.CreateItem(0)
With olMail
.To = "boss@example.com"
.Subject = "日報のご報告"
.Body = "本日の作業内容は以下の通りです。" & vbCrLf & "・マクロの作成完了"
.Display ' 送信するなら .Send
End With
End Sub
③ シート内の表を自動でPDF保存するマクロ
用途: 請求書や報告書をPDFで送る業務を簡略化。
Sub PDF出力()
Dim filePath As String
filePath = ThisWorkbook.Path & "\報告書.pdf"
Sheets("報告書").ExportAsFixedFormat Type:=xlTypePDF, Filename:=filePath
End Sub
④ 特定条件で行を抽出・別シートに転記するマクロ
用途:「進捗=未完了」のデータだけを抽出して別シートに転記
Sub 条件付き抽出()
Dim srcWs As Worksheet, tgtWs As Worksheet
Dim lastRow As Long, tgtRow As Long, i As Long
Set srcWs = ThisWorkbook.Sheets("データ元")
Set tgtWs = ThisWorkbook.Sheets("抽出結果")
tgtWs.Cells.ClearContents ' 転記先を初期化
' 見出しコピー
srcWs.Rows(1).Copy tgtWs.Rows(1)
tgtRow = 2
lastRow = srcWs.Cells(srcWs.Rows.Count, 1).End(xlUp).Row
For i = 2 To lastRow
If srcWs.Cells(i, 3).Value = "未完了" Then
srcWs.Rows(i).Copy tgtWs.Rows(tgtRow)
tgtRow = tgtRow + 1
End If
Next i
End Sub
🔎 補足:3列目(C列)に「未完了」がある行だけ抽出します。
⑤ フォルダ内のファイル一覧を自動で取得するマクロ
用途:「社内共有フォルダ」などの一覧管理をExcelで自動生成
Sub ファイル一覧取得()
Dim folderPath As String, fileName As String
Dim i As Long
folderPath = "C:\共有フォルダ\" ' ←適宜変更
If Right(folderPath, 1) <> "\" Then folderPath = folderPath & "\"
fileName = Dir(folderPath & "*.*")
i = 2
Cells(1, 1).Value = "ファイル名"
Cells(1, 2).Value = "更新日時"
Do While fileName <> ""
Cells(i, 1).Value = fileName
Cells(i, 2).Value = FileDateTime(folderPath & fileName)
i = i + 1
fileName = Dir()
Loop
End Sub
📁 補足:サブフォルダは含まれません。必要なら再帰処理を追加可能です。
⑥ シフト表や予定表を自動生成するマクロ
用途:曜日ごとにメンバーを割り振るシンプルなシフト表作成
Sub シフト自動生成()
Dim startDate As Date, i As Long
Dim members As Variant
members = Array("佐藤", "鈴木", "高橋", "田中", "伊藤")
startDate = DateSerial(2025, 8, 1) ' 開始日
For i = 0 To 30 ' 8月分
Cells(i + 2, 1).Value = startDate + i
Cells(i + 2, 2).Value = Format(startDate + i, "ddd")
Cells(i + 2, 3).Value = members(i Mod UBound(members) + 1)
Next i
Range("A1:C1").Value = Array("日付", "曜日", "担当者")
End Sub
📆 補足:1か月分の日付に交代でメンバーを自動割当します。
⑦ タスクの進捗状況を色で可視化するマクロ
用途:「完了 → 緑」「遅延 → 赤」などの色分け表示
Sub ステータス色分け()
Dim ws As Worksheet, lastRow As Long, i As Long
Set ws = ThisWorkbook.Sheets("タスク一覧")
lastRow = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row
For i = 2 To lastRow
Select Case ws.Cells(i, 3).Value
Case "完了"
ws.Rows(i).Interior.Color = RGB(204, 255, 204) ' 緑
Case "進行中"
ws.Rows(i).Interior.Color = RGB(255, 255, 153) ' 黄色
Case "遅延"
ws.Rows(i).Interior.Color = RGB(255, 153, 153) ' 赤
Case Else
ws.Rows(i).Interior.ColorIndex = xlNone
End Select
Next i
End Sub
🎨 補足:C列にある「ステータス」列を判定基準にしています。
⑧ 毎月の経費精算書を自動作成するマクロ
用途: 日付・項目・金額を入力してPDF化も可能な経費書生成
Sub 経費精算書作成()
Dim ws As Worksheet
Set ws = ThisWorkbook.Sheets("経費テンプレート")
Dim i As Long, rowCount As Long
rowCount = 10 ' 明細行数
For i = 1 To rowCount
ws.Cells(i + 4, 1).Value = DateSerial(2025, 8, i)
ws.Cells(i + 4, 2).Value = "交通費"
ws.Cells(i + 4, 3).Value = "○○線 ××駅~△△駅"
ws.Cells(i + 4, 4).Value = 480
Next i
ws.Cells(15, 4).Formula = "=SUM(D5:D14)" ' 合計
MsgBox "経費精算書を作成しました。"
End Sub
📌 補足:テンプレートの構造に応じて行位置は調整してください。
⑨ 定期バックアップを自動実行するマクロ
用途: 重要ファイルのコピーを日付付きで自動保存
Sub バックアップ作成()
Dim fso As Object
Dim srcPath As String, destPath As String
Dim fileName As String
srcPath = ThisWorkbook.FullName
fileName = "backup_" & Format(Now, "yyyymmdd_hhmmss") & ".xlsm"
destPath = ThisWorkbook.Path & "\" & fileName
Set fso = CreateObject("Scripting.FileSystemObject")
fso.CopyFile srcPath, destPath
MsgBox "バックアップを作成しました:" & vbCrLf & destPath
End Sub
🔒 補足:ファイルを上書きせず、日付付きファイル名で保存します。
⑩ Excel起動時に自動処理するマクロ(Workbook_Open)
用途: 開いた瞬間に集計や通知を実行。
Private Sub Workbook_Open()
MsgBox "おはようございます。今日も頑張りましょう!"
End Sub
🎯 残業ゼロを目指すために
VBAは“プログラミング初心者”でも扱える自動化ツールです。
今回紹介した10個のマクロを使えば、日々の定型業務の8割以上を自動化できます。
✔ スモールスタートのコツ
- まずは 手作業で時間がかかっている処理 を特定する
- サンプルコードをそのまま貼り付けて試してみる
- エラーが出たら少しずつ修正して慣れる
🔗 関連記事(あなたの業務をもっとラクに)
- 【これだけは押さえる】VBAでよく使う最重要コード10選|業務効率化に直結
- VBAとは?Excel業務を自動化する最短ルートとおすすめ実践例
- 【年収100万円アップ!?】VBAスキルが評価された転職成功事例と、あなたの次の一手
📌 まとめ
No | 内容 | 効果 |
---|---|---|
1 | ファイル一括集計 | 月末業務の時間削減 |
2 | 定型メール作成 | 日報が10秒で完了 |
3 | PDF自動保存 | 提出物作成の手間減 |
4 〜10 | その他マクロ多数 | 累計で月10時間削減 |
VBAで仕事を“時短化”し、自分の時間を取り戻しましょう!
転職でキャリアを加速させたいあなたへ
「今の職場に限界を感じている」「もっと評価される場所で働きたい」そんなあなたに向けて、転職成功の実践ノウハウと退職時の不安を解消するサポート情報をまとめました。
- ▶ キャリアを加速させるハイクラス転職の戦略
- ▶ 40代以上でも安心。経験を活かせる「エージェント」活用法
- ▶ ITエンジニア特化型「TechClipsエージェント」のリアルな評価
- ▶ 円満退職を実現するための法律サポートもチェック
転職・退職で迷っている方へ。不安を解消し、自信を持って次のキャリアへ踏み出しましょう。