【Step10】実践!ボタン一つで日報を作成するツールを作ろう

VBA

はじめに

毎日の作業日報を手書きやコピーで済ませていませんか?

今回は、ボタンを押すだけで日報を自動作成するVBAツールを紹介します。

「誰でも使える・時短できる・フォーマットが崩れない」…そんな理想のExcel日報が作れます!


◆ 完成イメージ

  • 「日報作成」ボタンをクリック
  • 指定されたフォーマットに今日の日付と作業内容が自動で入力
  • テンプレートを元に新しいシートとして作成

1クリックでその日の報告が完了!毎日の業務がグッとスマートになります。


◆ 事前準備

  1. Excelに「テンプレート」シートを作成しておく(書式・見出し入り)
  2. 「作業記録」などの入力用シートを用意
  3. シートにボタン(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を割り当てる方法

  1. 開発タブ → 挿入 →「フォームコントロール:ボタン」
  2. シート上に配置し、日報を作成するマクロを選択
  3. ボタン名を「日報作成」に変更しておくとわかりやすい

◆ 発展活用アイデア

  • PDFとして保存(ExportAsFixedFormat
  • 作成後に自動でメール送信
  • 週報・月報にも応用可能

まとめ

「ボタン1つで業務報告が終わる」って最高だと思いませんか?

VBAなら誰でも、時間をかけずに、日常の業務にぴったりのツールを自作できます。

この一歩が、あなたの働き方をもっと快適にしてくれます。


📝 関連記事

  • 【Step9】ファイルを一括処理!CSVやフォルダ操作の基本
  • 【応用編】VBAでPDF出力・自動メール送信もやってみよう
タイトルとURLをコピーしました