投稿日時: 24/11/02 08:21:18で方針を書きましたが、その後のそちらの進捗も不明で、残念です。
(1)期限確認用のブックとは別に、ブックを作成します(以下、自動実行用ブック)。
(2)自動実行用ブックのOpenイベントプロシージャに、以下の動作を実行するコードを
書いておく。
・期限確認用ブックを開き、
・期日の1か月前の時点で対応が「済」でなかった契約について、
・関係者にメールを送信する
(3)自動実行用ブックの定期実行については、Windowsのタスクスケジューラーを使います。
・Excel.exe を (2)で作成したBookを引数に指定する形式で、タスクに登録します。
・詳細は下記を参考に。
https://website-note.net/windows/how-to-open-an-excel-file-from-task/
以下、(2)の部分の参考コードをメモしておきます。
これをテスト確認したうえで、問題なければ、
・Openイベントプロシージャにコピーペイストするか、
(または
・標準モジュールにそのままコピーして、Openイベントプロシージャから Callします。)
Rem https://life-is-simple.blog/vba-outlook-mail-to/#google_vignette
Rem ■のある箇所は特にしっかり確認してください。
Sub 処理未済報告メール送信()
'Outlookの参照設定必要■
Dim MyOutlook As Outlook.Application
Dim Mailitem As Outlook.Mailitem
Dim k As Long
Dim wb As Workbook
Dim ws As Worksheet
Set MyOutlook = New Outlook.Application
Set wb = Workbooks.Open("期限確認.xlsm") '■パス名を確認して修正してください。
Set ws = wb.Worksheets(1)
For k = 2 To ws.Cells(Rows.Count, "A").End(xlUp).Row
If ws.Cells(k, "C") = "" Then
If ws.Cells(k, "B") <= Application.EDate(Date, 1) Then
Set Mailitem = MyOutlook.CreateItem(olMailItem)
With Mailitem
.To = ws.Cells(k, "D") '宛先
.CC = ws.Cells(k, "E") 'Cc
.Subject = "処理未済お知らせ"
.Body = "案件名:" & ws.Cells(k, "A") & vbCrLf _
& "期日:" & ws.Cells(k, "B")
'メールの表示
.Display '■■デバッグのときに、表示させてメール内容を確認
'.Send '■■動作確認後は、単に送信だけでよいと思う
End With
End If
End If
Next
wb.Close
Application.Quit
End Sub
ちなみに、自動実行ファイルの修正する際に、
・Explorerからではなく、
・ファイルの「開く」から、シフトキーを押したままで、「開く」をクリックして開くと、
自動実行を起動せずに開くことができます。(老婆心ながら)