日報は好きですか?
私は正直、あまり好きではないです…
今回は、そんな日報に関連する作業を少しでも楽にするためにマクロを作っていきます。
もちろん、日報の中身を考えることは非定型作業なので、自動化できません…
目次(クリックするとジャンプします)
日報関連の作業を洗い出す
私の場合、以下の作業があります。
始業時にすること
- 始業時間と業務予定を上司にメールで連絡
終業時にすること
- 終業時間と残業時間、業務実績を上司にメールで連絡
- 始業時間と終業時間を社内イントラ上の勤怠管理システムへ入力
- 勤務時間と業務実績を社内イントラ上の工数管理システムへ入力
作りたいマクロのイメージ
- 必要な項目(始業時間、終業時間、業務内容)をExcelのセルに入力する
- ボタンを押すと始業・終業時の作業を実行できる
ということで、シートの構成は下図のように作ってみました。
そして、Excel VBAのコードは以下のように作成しました。
Sub main() Dim ButtonRow, ButtonCol As Long Dim ButtonName As String Dim hiduke, shigyou, shugyou, kinmu As Date Dim youbi As String '---押したボタンの位置を検出し、ボタン名および入力内容を取得します--- With ActiveSheet.Shapes(Application.Caller).TopLeftCell ButtonRow = .Row ButtonCol = .Column End With ButtonName = Cells(4, ButtonCol).Value hiduke = Cells(ButtonRow, 2).Value youbi = Cells(ButtonRow, 3).Value shigyou = Cells(ButtonRow, 4).Value shugyou = Cells(ButtonRow, 5).Value kinmu = Cells(ButtonRow, 7).Value '---入力内容に漏れがあれば中断します--- If CStr(shigyou) = "" Then MsgBox("始業時間を入力してください") Exit Sub ElseIf CStr(shugyou) = "" Then MsgBox("終業時間を入力してください") Exit Sub End If '---押したボタンに応じて作業を実行します--- Select Case ButtonName Case "始業メール" Call CreateMail(ButtonRow, "start_mail") '第2回で紹介します Case "終業メール" Call CreateMail(ButtonRow, "end_mail") Case "勤怠入力" Call InputKintai(ButtonRow) '第3回で紹介します Case "工数入力" Call InputKousu(ButtonRow) End Select End Sub
今回は日報ポータルの大枠を作成しました。
次回からは、メールの自動作成や社内システムへの自動入力を作っていきます。