フォームを使わずに、定期的にOutlookのタスクを更新してコンソールに表示するようにプログラムを改良します。以下は、タスクの抽出処理を一定の間隔で自動実行するコードです。
改良版コード(フォームなし)
このコードでは、System.Timers.Timerを使用してタスクの情報を定期的にコンソールに表示します。タイマーの間隔は必要に応じて調整してください。
Imports Microsoft.Office.Interop.Outlook
Imports System.Timers
Module ExtractOutlookTasks
Private refreshTimer As System.Timers.Timer
Sub Main()
' タイマーの設定(10秒ごとに更新)
refreshTimer = New System.Timers.Timer(10000) ' ミリ秒単位 (10000ミリ秒 = 10秒)
AddHandler refreshTimer.Elapsed, AddressOf OnTimedEvent
refreshTimer.AutoReset = True
refreshTimer.Enabled = True
' 最初のタスク取得
UpdateTasks()
' 終了待機(Enterキーが押されるまで)
Console.WriteLine("タスクの更新を開始しました。終了するにはEnterキーを押してください。")
Console.ReadLine()
End Sub
' タイマーイベントでタスクを更新
Private Sub OnTimedEvent(source As Object, e As ElapsedEventArgs)
UpdateTasks()
End Sub
' タスクをOutlookから取得して表示する
Private Sub UpdateTasks()
Try
Dim outlookApp As New Application()
Dim tasksFolder As MAPIFolder = outlookApp.Session.GetDefaultFolder(OlDefaultFolders.olFolderTasks)
Console.Clear()
Console.WriteLine("現在のOutlookタスク一覧:")
Console.WriteLine("-------------------------------")
For Each task As TaskItem In tasksFolder.Items
Console.WriteLine($"Subject: {task.Subject}")
Console.WriteLine($"Due Date: {task.DueDate}")
Console.WriteLine($"Status: {task.Status}")
Console.WriteLine("-------------------------------")
Next
Catch ex As Exception
Console.WriteLine($"タスクの更新中にエラーが発生しました: {ex.Message}")
End Try
End Sub
End Module
プログラムの動作
タスク情報は10秒ごとにコンソールに表示されます。
更新中にエラーが発生した場合は、エラーメッセージが表示されます。
プログラムを終了するには、Enterキーを押してください。
コンパイルと実行方法
1. コードをテキストエディタにコピーし、ExtractOutlookTasks.vbとして保存します。
2. コマンドプロンプトで以下のコマンドを実行してコンパイルします。
vbc.exe /r:Microsoft.Office.Interop.Outlook.dll /out:ExtractOutlookTasks.exe ExtractOutlookTasks.vb
3. コンパイルが成功したら、ExtractOutlookTasks.exeを実行してください。
この方法で、Outlookのタスクを定期的に更新し、フォームを使わずにコンソールに表示することができます。タイマーの間隔は必要に応じて調整できます。