VBA 无法发送日历约会
Posted
技术标签:
【中文标题】VBA 无法发送日历约会【英文标题】:VBA can't send calendar appointment 【发布时间】:2011-11-28 02:43:45 【问题描述】:当我手动进行日历提醒/约会时,我可以单击“邀请与会者”并选择要邀请的人员,然后单击“发送”,每个人都会收到该日历提醒/约会。
我有以下代码以编程方式发出提醒,但它不会发送给预期的收件人。如果我在脚本运行后打开提醒并单击“邀请与会者”,我可以看到列表中填满了我想向其发送提醒的人,所以我不确定为什么它实际上没有向其发送提醒他们。
谁能帮我解释一下?
Private Function CreateAppointment(SubjectStr As String, BodyStr As String, StartTime As Date, EndTime As Date, AllDay As Boolean)
Dim olApp As Outlook.Application
Dim Appt As Outlook.AppointmentItem
' Only create the reminder if there's no duplicate
If (CheckForDuplicates(SubjectStr) = False) Then
Set olApp = CreateObject("Outlook.Application")
Set Appt = olApp.CreateItem(olAppointmentItem)
Appt.Recipients.Add ("John Doe")
Appt.Recipients.ResolveAll
Appt.Subject = SubjectStr
Appt.Start = StartTime
Appt.End = EndTime
Appt.AllDayEvent = AllDay
Appt.Body = BodyStr
Appt.ReminderSet = True
Appt.Save
Appt.Send
End If
Set Appt = Nothing
Set olApp = Nothing
End Function
【问题讨论】:
嗯,是的,我明白你的意思了!刚试了一下。不知道为什么发不出去! +1 个有用的问题。 这里也一样。我看到了一个名为“SendUsingAccount”的属性,您可以在其中进行如下设置: Application.Session.Accounts(1) 。您将在保存项目之前执行此操作。它仍然没有效果。我更改了帐户(例如,在我的 pop3 而不是公司 Exchange 服务器上尝试过)。此外,我加载了 Windows 2000 和 Outlook XP 的虚拟实例并在那里进行了尝试。没有运气,也没有回应为什么它不起作用。 :P 有趣的是在 Windows 2000 上,我在发送线上收到一个安全弹出窗口,上面写着“这个应用程序即将尝试发送一些东西。你想允许吗?”我说允许,但不允许。 这比我设法做到的要好。宏安全性表示任何发送函数必须在发送前通知用户,所以你一定做了一些半正确的事情......希望有人会遇到这个并为我们解答。 代码工作正常,在 Outlook 2010 中测试。我删除了If (CheckForDuplicates(SubjectStr) = False) Then
If 语句,因为它没有列出。请注意,出于安全考虑,有些事情只能通过将您的代码放在“VbaProject.OTM”中来在 VBA 中完成。如果你把它放在别处,它会失败。
【参考方案1】:
会议是一种特定类型的约会——邀请其他人参加的约会。
要预约会议,您需要做的不仅仅是邀请与会者。您需要将状态设置为“会议”。将此添加到您的代码中:
Appt.MeetingStatus = olMeeting
另请注意,您设置了提醒,但没有设置提醒时间。例如,
Appt.ReminderMinutesBeforeStart = 30
最后,如果这是 Outlook VBA,为什么要使用 CreateObject?您应该使用本机应用程序对象来派生所有对象。
即而不是
Set olApp = CreateObject("Outlook.Application")
你会使用
Set olApp = Outlook.Application
HTH
【讨论】:
非常感谢 JP!没有意识到我需要将其设置为会议类型。【参考方案2】:我遇到了同样的问题,直到我更换了它才能工作
Appt.Recipients.Add ("John Doe")
Appt.Recipients.ResolveAll
有
Appt.RequiredAttendees = "john.doe@email.com"
问候
克里斯
【讨论】:
以上是关于VBA 无法发送日历约会的主要内容,如果未能解决你的问题,请参考以下文章
是否有 VBA 方法可以在 Outlook 中创建新日历(不是约会)