为什么我不能通过vbs在Outlook中更改与会者的类型?

时间:2019-07-17 16:50:34

标签: vbscript outlook

我正在做一个脚本来自动预定会议室。但是在最后一步,AppointmentItem不能更改为MeetingItem。这是代码:

Set myItem = myOlApp.CreateItem(1)  
myItem.MeetingStatus = olMeeting

myItem.Subject = "..."  
myItem.Location = "..."  
myItem.Start = #...#  
myItem.Duration = 90 

set myResourceAttendee = myItem.Recipients.Add("xxx@xxx.com")
myResourceAttendee.Type = olResource

myItem.Save
' myItem.Send

我相信我经常将收件人的类型设置为“ olResource”,根据MS Docs,这是相同的方式。但这就是我得到的:

我的日历中的项目显示它仍然是Appointment,而我添加的资源是Required Attendee

在我将其手动设置为“资源”之后,它就变成了Meeting。我不了解这是如何发生的,以及如何解决这个问题。请帮我!非常感谢!

顺便说一句,Outlook版本是32位Outlook 2016(16.0.4849.1000)。

1 个答案:

答案 0 :(得分:0)

vbscript中不知道Outlook枚举值,例如olMeetingolResource(相对于Outlook-VBA)

您首先需要从文档中找出它们的数值。
例如,OlMeetingStatus enum文档说:

  • olMeeting-1-会议已安排。

  • olMeetingCanceled-5-预定的会议已被取消。

  • olMeetingReceived-3-已收到会议请求。

  • olMeetingReceivedAndCanceled-7-预定会议已被取消,但仍显示在用户的日历上。

  • olNonMeeting-0-已经安排了没有与会者的约会项目。此状态可用于在日历上设置假期。

然后在vbscript中,您可以定义自己的常量以匹配已知的枚举值

const olMeeting = 1 '<- define enum value here

dim myItem
Set myItem = myOlApp.CreateItem(1)  
myItem.MeetingStatus = olMeeting '<- use it here just like you would in VBA