Home > Enterprise >  Adding Recipients to Appointment VBA
Adding Recipients to Appointment VBA

Time:07-26

the code below creates a recurring Outlook appointment and another Outlook appointment through Excel and VBA. i'm trying to send the appointment to a different inbox, but i keep getting the "Run-time Error 287: Application-defined or object-defined error" at the line "OutlookAppt.Recipients.Add ("[email protected]")". the code works, except when i add this line, so i'm wondering why.

please let me know if you have any ideas as to how to fix this.

thank you a bunch in advance!

Sub CompleteReminders()
    Dim rows
    Dim sDate As Date, newFU As Date, newDate As Date, iDate As Date, generalDate As Date
    Dim iValue As Integer
    Dim iteration As Integer
    Dim LastRow As Long
    Dim i As Long
    Dim x As Integer
    Dim xRg As Range
    Dim myNamespace As Object
    Dim objfolder As Outlook.Folder
    Dim OutlookAppt As Outlook.AppointmentItem
    Dim OutlookAppt2 As Outlook.AppointmentItem
    Dim myRecurrPatt As Outlook.RecurrencePattern
    Const olFolderCalendar = 9
    Const olAppointment = 26
    Dim n As Integer
  

    Set OutApp = GetObject(, "Outlook.Application")
        If ErrL <> 0 Then
            Set OutApp = CreateObject("Outlook.Application")
        End If

    Set myNamespace = OutApp.GetNamespace("MAPI")
    Set objfolder = myNamespace.PickFolder 'Sets folder where appt will be created
  
    Set xRg = Range("B6:D6")
    
                Set OutlookAppt = OutApp.CreateItem(1)
                OutlookAppt.Duration = 5
                Set myRecurrPatt = OutlookAppt.GetRecurrencePattern
                With myRecurrPatt
                .PatternStartDate = Range("C1").Value
                .RecurrenceType = olRecursMonthNth
                .Interval = Range("C3").Value
                .PatternEndDate = dateEnd
                .StartTime = #5:00:00 PM#
                .EndTime = #5:05:00 PM#
                End With
                OutlookAppt.Subject = xRg.Cells(1, 1).Value
        
                If xRg.Cells(1, 2).Value > 0 Then
                    OutlookAppt.ReminderSet = True
                    OutlookAppt.ReminderMinutesBeforeStart = xRg.Cells(4, 6).Value
                Else
                    OutlookAppt.ReminderSet = False
                End If
                OutlookAppt.Body = xRg.Cells(1, 3).Value
                
                OutlookAppt.BusyStatus = olFree
                OutlookAppt.Recipients.Add ("[email protected]")
                OutlookAppt.Save
                
                Set OutlookAppt = objfolder.Items.Add(olAppointmentItem)
      
End Sub



CodePudding user response:

In some really quick testing, I was able to get the line to work by setting the object (recipients are objects):

Dim requiredRecipient as Outlook.Recipient
Set requiredRecipient = OutlookAppt.Recipients.Add ("[email protected]")
requiredRecipient.Type = olRequired 

Docs for reference: https://docs.microsoft.com/en-us/office/vba/api/outlook.recipients

CodePudding user response:

Use the AppointmentItem.RequiredAttendees property instead.

Also you may find the AppointmentItem.OptionalAttendees property helpful which returns or sets a string representing the display string of optional attendees names for the appointment.

In case of using the Recipients property for meetings you need to use the OlMeetingRecipientType enumeration.

CodePudding user response:

Get rid of () when calling Recipients.Add:

OutlookAppt.Recipients.Add "[email protected]"

or change it to

set Recip = OutlookAppt.Recipients.Add ("[email protected]")

() in VB are only used when calling a function, but not a sub.

  • Related