$マークを使った文字列の挿入方法は、VB.NETのバージョンやコンパイルオプションによってはサポートされていない場合があります。$マークを使わずに文字列を結合する方法に変更します。以下は、$マークを使用せずに文字列を修正したバージョンのコードです。
修正版コード
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.ToString())
Console.WriteLine("Status: " & task.Status.ToString())
Console.WriteLine("-------------------------------")
Next
Catch ex As Exception
Console.WriteLine("タスクの更新中にエラーが発生しました: " & ex.Message)
End Try
End Sub
End Module
修正内容
$を使った文字列補間を、&を使った文字列の結合に変更しました。
task.DueDate.ToString() と task.Status.ToString() のように、日時やステータスの情報を文字列に変換して表示しています。
コンパイルと実行方法
1. このコードをExtractOutlookTasks.vbとして保存します。
2. コマンドプロンプトで次のコマンドを実行してコンパイルします。
vbc.exe /r:Microsoft.Office.Interop.Outlook.dll /out:ExtractOutlookTasks.exe ExtractOutlookTasks.vb
3. ExtractOutlookTasks.exeを実行してプログラムを動かしてください。
この方法で、$マークによるエラーを回避し、Outlookのタスクを定期的に更新して表示することができます。