はじめに
毎日の作業日報を手書きやコピーで済ませていませんか?
今回は、ボタンを押すだけで日報を自動作成するVBAツールを紹介します。
「誰でも使える・時短できる・フォーマットが崩れない」…そんな理想のExcel日報が作れます!
◆ 完成イメージ
- 「日報作成」ボタンをクリック
- 指定されたフォーマットに今日の日付と作業内容が自動で入力
- テンプレートを元に新しいシートとして作成
1クリックでその日の報告が完了!毎日の業務がグッとスマートになります。
◆ 事前準備
- Excelに「テンプレート」シートを作成しておく(書式・見出し入り)
- 「作業記録」などの入力用シートを用意
- シートにボタン(ActiveX か フォームコントロール)を配置
◆ サンプル構成
- テンプレートシート名: Template
- 入力内容: 作業者名、作業内容、開始・終了時間 など
◆ VBAコード全文
Sub 日報を作成する()
Dim wsTemplate As Worksheet
Dim wsNew As Worksheet
Dim todayStr As String
Dim lastRow As Long
' テンプレートシートの設定
Set wsTemplate = ThisWorkbook.Sheets("Template")
' 日付で新しいシート名を作成
todayStr = Format(Date, "yyyy-mm-dd")
' すでに同じ日付のシートがあれば削除
On Error Resume Next
Application.DisplayAlerts = False
ThisWorkbook.Sheets(todayStr).Delete
Application.DisplayAlerts = True
On Error GoTo 0
' テンプレートをコピーして新しいシートに
wsTemplate.Copy After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count)
Set wsNew = ActiveSheet
wsNew.Name = todayStr
' データ転記(例:入力用シート"Input"から)
With ThisWorkbook.Sheets("Input")
wsNew.Range("B2").Value = todayStr
wsNew.Range("B3").Value = .Range("B2").Value ' 作業者名
wsNew.Range("B4").Value = .Range("B3").Value ' 作業内容
wsNew.Range("B5").Value = .Range("B4").Value ' 開始時間
wsNew.Range("B6").Value = .Range("B5").Value ' 終了時間
End With
MsgBox "日報シート「" & todayStr & "」を作成しました!", vbInformation
End Sub
◆ 実装ポイント
- 毎日新しいシートが作られるので履歴が残る
- テンプレート形式なので書式が崩れない
- 必要に応じてPDF化や保存機能を追加可能
◆ ボタンにVBAを割り当てる方法
- 開発タブ → 挿入 →「フォームコントロール:ボタン」
- シート上に配置し、
日報を作成するマクロを選択 - ボタン名を「日報作成」に変更しておくとわかりやすい
◆ 発展活用アイデア
- PDFとして保存(
ExportAsFixedFormat) - 作成後に自動でメール送信
- 週報・月報にも応用可能
まとめ
「ボタン1つで業務報告が終わる」って最高だと思いませんか?
VBAなら誰でも、時間をかけずに、日常の業務にぴったりのツールを自作できます。
この一歩が、あなたの働き方をもっと快適にしてくれます。
📝 関連記事
- 【Step9】ファイルを一括処理!CSVやフォルダ操作の基本
- 【応用編】VBAでPDF出力・自動メール送信もやってみよう

