VBA Macro to VBScript in a form- Help Please!

Outlook version
Outlook 2007
Email Account
Exchange Server
#1
Ok so here's what I want to do. I have a custom form that creates an appointment which I invite others to attend from a shared calendar. I want the form to also send an email that is delayed by 2 days from the start date of the appointment, to the person that is invited (the required attendee) that is set within the form. I have a macro in outlook where I can select the appointment in the calendar and then run the macro and it will send the email. But I want the form to do it all (so my coworkers don't have to go into the calendar and select the appointment then run the macro). Can this be done? I'll include the VBA for the macro below. Thanks!

Code:
Sub mail() 
 
Dim obj As Object 
 
Dim Sel As Outlook.Selection 
 
Dim objAppt As Outlook.AppointmentItem 
 
Dim objOutlook As Object 
 
Dim objOutlookMsg As Object 
 
Set Sel = Application.ActiveExplorer.Selection 
 
Set objOutlook = CreateObject("Outlook.Application") 
 
Set objOutlookMsg = objOutlook.CreateItem(0) 
 
If Sel.Count Then  Set obj = Sel(1)

   If TypeOf obj Is Outlook.AppointmentItem Then
  
     Set objAppt = obj
     Set objTask1 = Application.CreateItem(olTaskItem) 
 
With objOutlookMsg
  .To = objAppt.RequiredAttendees
  .Subject = "Business Banking Follow up reminder: " & objAppt.Location
  '.Body = "This is the body of message"
  .HTMLBody = "Test message! " & "Company: " & objAppt.Location & " " & objAppt.Start
   dteThen = objAppt.Start + 2
  .DeferredDeliveryTime = dteThen
  '.Attachments.Add ("c:\myFileToSend.txt")
  .Send
 
 
End With 
 
End If 
 
End If 
 
On Error Resume Next 
 
Set objOutlookMsg = Nothing 
 
Set objOutlook = Nothing 
 
End Sub
 
Outlook version
Outlook 2016 32 bit
Email Account
Office 365 Exchange
#2
To make it automatic, you need to use an application start macro and an itemadd macro.

See Send an email when you add an appointment to your calendar - Slipstick Systems for the code.

This code would add it to your outbox. I have not tested it, but you might be able to add it to the form - you need to use a script and would use a

Function Item_Send()

Vbscript is slightly different from VBA so the code will need tweaked a little.
 
Outlook version
Outlook 2016 32 bit
Email Account
Office 365 Exchange
#3
If you wanted to use the script editor in a custom form (View code button), try this

Code:
Function Item_Send() 
 
Set MyApp = CreateObject("Outlook.Application") 
 
Set MyItem = MyApp.CreateItem(0) 'olMailItem 
 
With MyItem
  .To = Item.RequiredAttendees
  .Subject = "Business Banking Follow up reminder: " & Item.Location
  .Body = "Test message! " & Chr(13)  &  "Company: " & Item.Location &  Chr(13) & "Time: " & Item.Start
  .DeferredDeliveryTime =  Item.Start - 2
  '.Attachments.Add ("c:\myFileToSend.txt")
 ' .Send
   .Display 
 
End With 
 
End Function
 
Outlook version
Outlook 2007
Email Account
Exchange Server
#4
Diane,

Thanks for the quick response! I tried the script below in the script editor in my custom form. I don't receive any errors and the script looks sound to me, but when I use the form to set an appointment, no email is sent or placed in my outbox. Any ideas why?

If you wanted to use the script editor in a custom form (View code button), try this

Code:
Function Item_Send() 
 
Set MyApp = CreateObject("Outlook.Application") 
 
Set MyItem = MyApp.CreateItem(0) 'olMailItem 
 
With MyItem
  .To = Item.RequiredAttendees
  .Subject = "Business Banking Follow up reminder: " & Item.Location
  .Body = "Test message! " & Chr(13)  &  "Company: " & Item.Location &  Chr(13) & "Time: " & Item.Start
  .DeferredDeliveryTime =  Item.Start - 2
  '.Attachments.Add ("c:\myFileToSend.txt")
 ' .Send
   .Display 
 
End With 
 
End Function
 
Outlook version
Outlook 2016 32 bit
Email Account
Office 365 Exchange
#5
Are you doing appointments or meeting requests? It works when you hit Send, not Save.
 
Outlook version
Outlook 2007
Email Account
Exchange Server
#6
I'm setting an appointment. So here's what I did. I went to design mode for the form, view script, and added that script to the editor and published the form again. Then I do my usual, (tools, choose a form..etc) I set the time, add the invitees, etc. when i click send, the appointment itself sends, but the email doesnt get added to my outbox. Am I missing something?
 
Outlook version
Outlook 2016 32 bit
Email Account
Office 365 Exchange
#7
Does the email display? I have the code set to show the message, change display to send and it will go into the outbox.
 
Outlook version
Outlook 2007
Email Account
Exchange Server
#8
The email doesn't display, and I changed it to send instead of display and it still doesn't send. I can't find any reason as to why it isn't working.

Does the email display? I have the code set to show the message, change display to send and it will go into the outbox.
 
Outlook version
Outlook 2016 32 bit
Email Account
Office 365 Exchange
#9
Are you using the exact same script I posted?

Check Tools, Trust center - Email security - is script in shared folders enabled? if you use run now which designing the form, it should work but you may need that set when it's published.
 
Outlook version
Outlook 2007
Email Account
Exchange Server
#10
Diane,

This was not enabled at the time, I enabled it and it still isn't putting an email in the outbox or sending the email at all. I used the exact script that you posted. For testing purposes I am publishing this form to my personal calendar and testing it before I publish it to the shared calendar. Would that affect it?

Are you using the exact same script I posted?

Check Tools, Trust center - Email security - is script in shared folders enabled? if you use run now which designing the form, it should work but you may need that set when it's published.
 
Outlook version
Outlook 2016 32 bit
Email Account
Office 365 Exchange
#11
What addins are installed? I just had a guy tell me xobni prevents VBA from running. It worked when she disabled it, test the VBA, then re-enabled xobni.
 
Top