業務レポートのTask部分のみ自動生成(VBA)
作業時間を記録しているExcelから、業務レポートの一部を自動生成。
・コメント欄
・他の項目もテンプレ部分も出力させる
辺りの改良の余地あり。
※作業時間を記録してるExcelは以下にアップロード
→業務レポート用.xlsm - Google ドライブ
Option Base 1 ' 配列を1から Const MaxTaskNum As Long = 42 Sub CreateTask() Dim i As Long Dim TaskListCell As Variant Dim TempFileNamePath As String Dim TaskList(MaxTaskNum, 3) As String Dim Str1, Str2, Str3 As String ' 出力ファイルパス TempFileNamePath = "C:\work\VBA\業務レポート作成\test.txt" Sheets("タスク種類").Activate ' タスク一覧取得 TaskListCell = Range("A2").Resize(MaxTaskNum, 2) ' 出力ファイルを作成 Set OutPutFileObj = CreateObject("Scripting.FileSystemObject"). _ CreateTextFile(TempFileNamePath) ' 出力ループ For i = 1 To MaxTaskNum ' Task名が無い場合は飛ばす If TaskListCell(i, 2) = "" Then GoTo Next_i ' Task名がある場合はTaskのセット作成 Str1 = "・タスク名:" & TaskListCell(i, 2) Str2 = " 作業時間:" & TaskListCell(i, 1) Str3 = " コメント:" ' 未実装 OutPutFileObj.WriteLine (Str1) OutPutFileObj.WriteLine (Str2) OutPutFileObj.WriteLine (Str3) Next_i: Next i ' 後始末 OutPutFileObj.Close End Sub
出力結果
・タスク名:朝会 作業時間:0.25 コメント: ・タスク名:残業申請 作業時間:0.25 コメント: ・タスク名:TaskA 作業時間:2.75 コメント: ・タスク名:TaskB 作業時間:2 コメント: ・タスク名:TaskC 作業時間:0.5 コメント:
詰まった点としては、
出力結果が一部「0.249999999999999」のようになった。
Excel側でROUNDUPを使って小数点第3位まで丸めて解決。