VBA can';不要发送日历约会

VBA can';不要发送日历约会,vba,calendar,appointment,Vba,Calendar,Appointment,当我手动制作日历提醒/约会时,我可以单击“邀请与会者”,选择要邀请的人,然后单击“发送”,每个人都将收到该日历提醒/约会 我有以下代码以编程方式制作提醒,但它不会发送给预期的收件人。如果我在脚本运行后打开提醒并单击“邀请与会者”,我可以看到列表中充满了我想向其发送提醒的人,因此我不确定为什么它没有实际向他们发送提醒 有人能帮我解释一下吗 Private Function CreateAppointment(SubjectStr As String, BodyStr As String, Star

当我手动制作日历提醒/约会时,我可以单击“邀请与会者”,选择要邀请的人,然后单击“发送”,每个人都将收到该日历提醒/约会

我有以下代码以编程方式制作提醒,但它不会发送给预期的收件人。如果我在脚本运行后打开提醒并单击“邀请与会者”,我可以看到列表中充满了我想向其发送提醒的人,因此我不确定为什么它没有实际向他们发送提醒

有人能帮我解释一下吗

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

会议是一种特定类型的约会——邀请其他人参加的约会

为了预约会议,您需要做的不仅仅是邀请与会者。您需要将状态设置为“会议”。将此添加到您的代码中:

Appt.MeetingStatus = olMeeting
还要注意,您设置了提醒,但没有设置提醒时间。比如说,

Appt.ReminderMinutesBeforeStart = 30
最后,如果这是Outlook VBA,为什么要使用CreateObject?您应该使用本机应用程序对象来派生所有对象

i、 e.代替

Set olApp = CreateObject("Outlook.Application")
你会用

Set olApp = Outlook.Application

HTH

我也有同样的问题,直到我更换了它才开始工作

Appt.Recipients.Add ("John Doe")
Appt.Recipients.ResolveAll

问候


克里斯

嗯,是的,我明白你的意思了!我试过了。我不知道为什么它没有被发送+1个有用的问题,这里也一样。我看到了一个名为“SendUsingAccount”的属性,您可以在其中进行如下设置:Application.Session.Accounts(1)。您应该在保存项目之前执行此操作。还是没有效果。我更改了帐户(例如,在我的pop3上而不是在公司Exchange服务器上进行了尝试)。此外,我还加载了一个Windows2000和OutlookXP的虚拟实例,并在那里进行了尝试。没有运气,也没有回应为什么它不起作用:P有趣的是,在Windows 2000上,我在发送线上看到一个安全弹出窗口,上面写着“此应用程序将尝试发送某些内容。你想允许吗?”我说“允许”,但什么也不允许。这比我设法做到的更好。宏安全性表示任何发送函数都必须在发送前通知用户,所以您必须做了一些半正确的事情。。。希望有人会遇到这个问题,并为我们提供答案。该代码运行良好,在Outlook 2010中进行了测试。我删除了
If(CheckForDuplicates(SubjectStr)=False),然后删除了
If语句,因为它没有列出。请注意,出于安全考虑,有些事情只能通过将代码放入“VbaProject.OTM”中在VBA中完成。如果你把它放在别处,它就会失败。非常感谢JP!没有意识到我需要将它设置为会议类型。
Appt.RequiredAttendees = "john.doe@email.com"