An alternative method
Sub ScheduleOutlookEmail() Dim olApp As Object 'Outlook.Application Dim olMail As Object 'Outlook.MailItem Dim SendDateTime As Date Dim Recipient As String Dim Subject As String Dim Body As String ' Configuration Recipient = InputBox("Enter the recipient's email address:") If Recipient = "" Then Exit Sub ' User cancelled Subject = InputBox("Enter the subject of the email:") If Subject = "" Then Exit Sub ' User cancelled Body = InputBox("Enter the body of the email:") If Body = "" Then Exit Sub ' User cancelled ' Get the desired send date and time from the user On Error Resume Next SendDateTime = InputBox("Enter the date and time to send the email (e.g., yyyy/mm/dd hh:mm):", , _ Format(Now + TimeSerial(0, 5, 0), "yyyy/mm/dd hh:mm")) ' Default 5 minutes from now On Error GoTo 0 ' Check if the entered date/time is valid If Not IsDate(SendDateTime) Then MsgBox "Invalid date or time entered. Please try again.", vbExclamation Exit Sub End If If SendDateTime <= Now Then MsgBox "The scheduled time must be in the future. Please try again.", vbExclamation Exit Sub End If ' Create and Schedule the Email On Error Resume Next Set olApp = GetObject(, "Outlook.Application") On Error GoTo 0 If olApp Is Nothing Then Set olApp = CreateObject("Outlook.Application") End If Set olMail = olApp.CreateItem(0) ' olMailItem With olMail .To = Recipient .Subject = Subject .Body = Body .DeferredDeliveryTime = SendDateTime .Display ' Optionally display the email for review before scheduling '.Send ' Uncomment this to send immediately (without scheduling) End With Set olMail = Nothing Set olApp = Nothing MsgBox "Email to '" & Recipient & "' scheduled to be sent at " & Format(SendDateTime, "yyyy/mm/dd hh:mm") & ".", vbInformation End Sub




Reply With Quote