首页 > 解决方案 > 触发发送时获取 AppointmentItem 数据

问题描述

当我发送 Outlook 2016 约会时,我使用以下来触发 VBA 代码:

Application_ItemSend(ByVal Item As Object, Cancel As Boolean)

如何显示特定于“AppointmentItem”类型的数据?

我期待一个消息框“你想在学校谈论计算机吗”,
但我收到一个运行时错误“438”。

Private Sub Application_ItemSend(ByVal Item As Object, Cancel As Boolean)

    Dim prompt As String
    prompt = "Do you want to talk about " & Item.Subject    'Works
    prompt = prompt & " at " & Item.Location                'Error
    If MsgBox(prompt, vbYesNo + vbQuestion, "Sample") = vbNo Then
        Cancel = True
    End If

End Sub

标签: vbaoutlook

解决方案


如果您发送会议请求,则发送的项目本身是 anolMeetingRequest而不是olAppoinmentItem.

您可以通过GetAssociatedAppointment处理相应的约会项目

Private Sub Application_ItemSend(ByVal Item As Object, Cancel As Boolean)
    Dim objAppointment As AppointmentItem
    If Item.Class = olMeetingRequest Then
        Set objAppointment = Item.GetAssociatedAppointment(False)
        Debug.Print objAppointment.Subject
        Debug.Print objAppointment.Location
    End If
End Sub

推荐阅读