以下の機能を新たに実装してみた。
- Outlookタスクの実働時間の記録
- Outlookタスクの予定表への出力
タスクの起動をイベントプロシージャで監視して、起動したら起動時間を記録
タスクの終了をイベントプロシージャで監視して、終了したら起動時間と現在時間との差分を実働時間に記録
それとともに、起動時間と現在時間を利用して予定表に予定を出力。
今は1つのタスクにした監視ができないので、ここは要改善!
File: ThisOutlookSection
Dim WithEvents myInspectors As Inspectors
Dim WithEvents myTaskItem As TaskItem
Private Sub Application_Startup()
Set myInspectors = Outlook.Inspectors
End Sub
Private Sub myInspectors_NewInspector(ByVal Inspector As Inspector)
If TypeName(Inspector.CurrentItem) = "TaskItem" Then
Set myTaskItem = Inspector.CurrentItem
End If
End Sub
'タスク起動
Private Sub myTaskItem_Open(Cancel As Boolean)
'起動時間を記録
Call TaskTrace_StartTimer
End Sub
'タスク終了
Private Sub myTaskItem_Close(Cancel As Boolean)
' 予定表にログを生成
Call TaskLog_Create(myTaskItem.Subject)
'実働時間を獲得
myTaskItem.ActualWork = (myTaskItem.ActualWork + TaskTrace_GetActualWorkTime())
Set myTaskItem = Nothing
End Sub
File: TaskTrace
'---------------------------------------------------------------------
'タスクの起動時間を実働時間に記録する
'---------------------------------------------------------------------
Option Explicit
Dim start_time
Public Sub TaskTrace_StartTimer()
start_time = Now()
End Sub
Public Sub TaskTrace_StopTimer()
start_time = 0
End Sub
Public Function TaskTrace_GetActualWorkTime()
Dim current_actualwork_time
TaskTrace_GetActualWorkTime = DateDiff("n", start_time, Now())
start_time = 0
End Function
Public Function TaskTrace_GetStartTime()
TaskTrace_GetStartTime = start_time
End Function
File: TaskLog
'---------------------------------------------------------------------
' 予定を生成
'---------------------------------------------------------------------
Public Sub TaskLog_Create(jobNAME As String)
Dim fldCalendar As Folder
Dim aITEM As AppointmentItem
'フォルダ指定
Set fldCalendar = Session.Folders("Outlook").Folders("予定表").Folders("TaskLog")
Set aITEM = fldCalendar.Items.Add
With aITEM
.Subject = jobNAME
.Body = "Samplebody"
.Start = TaskTrace_GetStartTime()
.End = Now
.Save
End With
End Sub
参考リンクはココ
https://outlooklab.wordpress.com/category/outlook-vba-%E3%83%9E%E3%82%AF%E3%83%AD/