PR

Accessで出退勤管理アプリを作ろう!|初心者向けガイド

Access
スポンサーリンク
スポンサーリンク

こんにちは、なかぜんです。

「出勤や退勤を紙で管理しているけど、月末の集計が大変…」
「タイムカード代わりになるツールを無料で作れたらいいのに…」
そんな悩み、ありませんか?

実は、Microsoft Accessを使えば、出退勤の記録から集計までカバーできるアプリを、自分で簡単に作ることができます!

今回は、Access初心者でも取り組めるように、テーブル設計・フォーム作成・VBAコード・集計クエリまで、1つずつ丁寧にご紹介していきます。


スポンサーリンク

📌まずは基本設計を考えよう

● 必要な機能は?

最低限、次のような機能があると便利です:

  • 社員名の選択
  • 出勤ボタンで「現在時刻」を記録
  • 退勤ボタンで「退勤時刻」を記録
  • 日付ごとの記録表示
  • 月単位の集計

● テーブル設計例(T_出退勤)

フィールド名データ型説明
IDオートナンバー主キー
社員名短いテキスト出退勤する人の名前
日付日付/時刻勤務日
出勤時刻日付/時刻ボタンで入力
退勤時刻日付/時刻ボタンで入力

🖥フォームとVBAで出退勤を記録

● フォーム設計(F_出退勤)

フォームに配置する主なコントロールは以下のとおりです:

  • 社員名:コンボボックス(事前に社員リストがあると◎)
  • 日付:テキストボックス(既定値=Date)
  • 出勤ボタン:btn出勤
  • 退勤ボタン:btn退勤

● 出勤ボタンのVBAコード

Private Sub btn出勤_Click()
    If IsNull(Me.社員名) Then
        MsgBox "社員名を選択してください", vbExclamation
        Exit Sub
    End If

    Me.出勤時刻 = Now()
    Me.日付 = Date
    DoCmd.RunCommand acCmdSaveRecord
    MsgBox "出勤時刻を記録しました", vbInformation
End Sub

● 退勤ボタンのVBAコード

Private Sub btn退勤_Click()
    If IsNull(Me.社員名) Then
        MsgBox "社員名を選択してください", vbExclamation
        Exit Sub
    End If

    Me.退勤時刻 = Now()
    DoCmd.RunCommand acCmdSaveRecord
    MsgBox "退勤時刻を記録しました", vbInformation
End Sub

「Now()」で現在の時刻が取得されます。入力ミス防止のため、社員名が未入力のときはメッセージで注意するようにしています。


🔍よくあるミスと注意点

  • 【注意】同じ日付に複数レコードができる → 重複チェックを導入すると安心
  • 【注意】日付をまたぐ勤務 → 勤務日が日付フィールドに正しく記録されるよう注意
  • 【注意】社員名の手入力 → コンボボックスで選択式にすることで入力ミスを防げます

📊応用:月ごとの集計クエリ

出退勤データから、月別の勤務状況を集計したいときは、次のようなクエリが便利です:

SELECT 
  社員名, 
  Format([日付], "yyyy/mm") AS 月,
  Count(*) AS 出勤日数,
  Avg(DateDiff("n", [出勤時刻], [退勤時刻])) AS 平均勤務時間_分
FROM 
  T_出退勤
WHERE 
  退勤時刻 Is Not Null
GROUP BY 
  社員名, Format([日付], "yyyy/mm");

これを元にレポートを作成すれば、月報や給与計算の元データとしても活用できます。


🎯まとめ|小さく始めて業務改善!

Accessで作る出退勤管理アプリは、個人でも小規模チームでもすぐに導入できる優れモノ。

  • ボタン1つで打刻記録
  • 日付や社員ごとの集計も簡単
  • 無料&カスタマイズ自由

今回ご紹介した内容は、あくまで「最小構成」。もっと本格的にするなら:

  • 社員マスタと連携
  • 勤務時間の自動計算
  • レポート印刷対応

…など、いろんな拡張が可能です。

Accessは慣れるとどんどん楽しくなります。
「これなら自分でもできそう!」と思った方、ぜひ最初の一歩を踏み出してみてくださいね。

楽天Kobo電子書籍ストア
¥1,760 (2025/05/01 14:18時点 | 楽天市場調べ)