bearprecioso on Tue, 08 Aug 2017 14:42:29
I received this macro to detect when a meeting is added to my calendar and give an opportunity to block-off travel time on either side of it. (create a meeting to run from 1:15 to 2:15, then the script would create an appointment from 1:00 – 1:15 for travel to the meeting and another from 2:15 – 2:30 to return from the meeting.
However, I am just ignorant enough (so not a developer) to not understand why the very first statement receives a syntax error.
Can you help? Maybe there is a simpler macro? As I understand it, I need to remove lines 16 and 42 in order for this to work for appointments. However, I want it to work for both meetings and appointment. Also, I want to alter it to allow me to choose the amount of time before/after a meeting, as sometimes I need 45 minutes of travel each way.
I am using Microsoft Outlook 365 ProPlus on a network using Windows 7 Professional
Here is what I was given: (I am not asking the originator, as they did not respond to my follow up questions)
Can someone help me with this?
1:Dim WithEvents olkCalendar As Outlook.Items
3:Private Sub Application_Quit()
4: Set olkCalendar = Nothing
7:Private Sub Application_Startup()
8: Set olkCalendar = Session.GetDefaultFolder(olFolderCalendar).Items
11:Private Sub olkCalendar_ItemAdd(ByVal Item As Object)
12: Const SCRIPT_NAME = "Schedule Travel Time"
13: Dim olkTravel1 As Outlook.AppointmentItem, _
14: olkTravel2 As Outlook.AppointmentItem, _
15: intMinutes As Integer
16: If Item.MeetingStatus = olMeeting Then
17: If msgbox("Do you need to schedule travel time for this meeting?", vbQuestion + vbYesNo, SCRIPT_NAME) = vbYes Then
18: intMinutes = InputBox("How many minutes each way?", SCRIPT_NAME, 15)
19: If intMinutes > 0 Then
20: Set olkTravel1 = Application.CreateItem(olAppointmentItem)
21: With olkTravel1
22: 'Edit the subject as desired'
23: .Subject = "Travel to Meeting: " & Item.Subject
24: .Start = DateAdd("n", intMinutes * -1, Item.Start)
25: .End = Item.Start
26: .Categories = Item.Categories
27: .BusyStatus = olBusy
29: End With
30: Set olkTravel2 = Application.CreateItem(olAppointmentItem)
31: With olkTravel2
32: 'Edit the subject as desired'
33: .Subject = "Travel from Meeting: " & Item.Subject
34: .Start = Item.End
35: .End = DateAdd("n", intMinutes, Item.End)
36: .Categories = Item.Categories
37: .BusyStatus = olBusy
39: End With
40: End If
41: End If
42: End If
43: Set olkTravel1 = Nothing
44: Set olkTravel2 = Nothing
Eugene Astafiev on Tue, 08 Aug 2017 17:07:14
You can replace the following line of code:
If Item.MeetingStatus = olMeeting Then
to the following one:
If Item.Class = olAppointment Then
You may find the Getting Started with VBA in Outlook 2010 article helpful.