【问题标题】:Send invites for share folder Items发送共享文件夹项目的邀请
【发布时间】:2020-07-20 14:38:47
【问题描述】:

我们使用以下代码在共享日历中创建多个项目。一切正常,只有邀请不会发送给可选的与会者。不幸的是,MS Docs 在这方面有点不清楚:

Sub DoOne(Calendar, Subject, Start, Duration, Category)
Dim Appointment As Outlook.AppointmentItem
Dim Attendee As Outlook.Recipient


If Subject <> "" Then
    Set Appointment = Calendar.Items.Add
    With Appointment
        .Start = Start
        .Duration = Duration
        .ReminderSet = False
        
        .Subject = Subject
        .Categories = Category
        
      
    Set Attendee = Appointment.Recipients.Add("distrubutionlist")
    Attendee.Type = olOptional
            
    Appointment.Move Calendar
    Appointment.Send

End If
End Sub

还尝试使用 OptionalAttendees.Add 属性进行此操作,但也没有生成邀请。

【问题讨论】:

    标签: vba outlook


    【解决方案1】:

    您必须首先使用 AppointmentItem.MeetingStatus 属性设置约会的会议状态,该属性设置一个指定约会的会议状态的 OlMeetingStatus 常量。

    Sub CreateAppt() 
     Dim myItem As Object
     Dim myRequiredAttendee, myOptionalAttendee, myResourceAttendee As Outlook.Recipient 
     
     Set myItem = Application.CreateItem(olAppointmentItem) 
     myItem.MeetingStatus = olMeeting 
     myItem.Subject = "Strategy Meeting" 
     myItem.Location = "Conference Room B" 
     myItem.Start = #9/24/2020 1:30:00 PM# 
     myItem.Duration = 90 
     Set myRequiredAttendee = myItem.Recipients.Add("Eugene Astafiev") 
     myRequiredAttendee.Type = olRequired 
     Set myOptionalAttendee = myItem.Recipients.Add("Kevin Kennedy") 
     myOptionalAttendee.Type = olOptional 
     Set myResourceAttendee = myItem.Recipients.Add("Conference Room B")
     myResourceAttendee.Type = olResource 
     myItem.Display 
    End Sub
    

    另外,您需要特别注意在Send 之前调用的Move 方法。它将 Microsoft Outlook 项目移动到新文件夹并返回一个 Object 值,该值表示已移动到指定文件夹的项目。因此,您的代码不应调用 Move 方法或优雅地处理它:

    movedItem = Appointment.Move Calendar
    movedItem.Send
    

    【讨论】:

      【解决方案2】:

      这两项更改成功了,谢谢,尤金。

      工作代码如下:

      Sub DoOne(Calendar, Subject, Start, Duration, Category)
      
      Dim Appointment As Outlook.AppointmentItem
      Dim Attendee As Outlook.Recipient
      
      
      If Subject <> "" Then
          Set Appointment = Calendar.Items.Add
          With Appointment
              .MeetingStatus = olMeeting
              .Start = Start
              .Duration = Duration
              .ReminderSet = False
              
              .Subject = Subject
              .Categories = Category
          End With
      
          Set Attendee = Appointment.Recipients.Add("distributionlist")
          Attendee.Type = olOptional
          Attendee.Resolve
      
          Appointment.Send
      
      End If
      
      End Sub
      

      【讨论】:

      • 仅供参考。无需更改,因为这是一个非致命错误。您将约会添加到日历中,因此无需移动。如果约会不是添加而是“创建”的,则移动可能是合适的。创建的项目放置在适当的默认文件夹中。 stackoverflow.com/questions/29326940/…
      • 但是我将约会添加到我自己的日历而不是共享日历中,对吗?
      • 如stackoverflow.com/a/29331780/1571407 中所述,Add 用于引用文件夹。约会已经在您想要的地方。在Set Appointment = Calendar.Items.Add 和Set Appointment = Appointment.Move(Calendar) 之后放置一个Debug.Print Appointment.Parent。结果应该是一样的。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-03
      • 1970-01-01
      • 1970-01-01
      • 2020-03-16
      • 1970-01-01
      相关资源
      最近更新 更多