2016-02-12 107 views
1

我有一个相当直接的VBA脚本,它接受Outlook(2013)中的会议请求。它工作正常,大部分的时间,但对于一些会议请求它提供了有关该行 设置oResponse = oAppt.Respond(olMeetingAccepted,真)在Outlook VBA中获取“对象变量或未设置块变量”有时

我试图给我“对象未设置变量或与块变量”看看不同的会议请求,找出可能触发它的任何差异,但出于所有目的,它们看起来像相同的请求(当然,它们来自具有不同主题和时间的不同发送者,但没有任何我可以看到的触发失败)。

有什么想法可能会发生什么?下面是完整的子(它得到由Outlook规则触发)

Sub AutoAcceptMeetings(oRequest As MeetingItem) 

Dim senderName As String 
Dim subjectName As String 
Dim meetingTime As String 
Dim senderContains As Integer 
Dim subjectContains As Integer 
Dim oResponse As MeetingItem 
Dim oAppt As AppointmentItem 
On Error GoTo debugs 

If oRequest.MessageClass <> "IPM.Schedule.Meeting.Request" Then 
    Exit Sub 
End If 

Set oAppt = oRequest.GetAssociatedAppointment(True) 

senderName = oRequest.senderName 
subjectName = oRequest.Subject 


senderContains = InStr(1, senderName, "Gina") 
'Her meeting invitations don't have a reminder set. 
If (senderContains > 0) Then 
    oAppt.ReminderSet = True 
    oAppt.ReminderMinutesBeforeStart = 15 
End If 

senderContains = InStr(1, senderName, "Jim") 

If (senderContains > 0) Then 'I don't want a reminder 
    oAppt.ReminderSet = False 
    oAppt.BusyStatus = olTentative 
    oAppt.Save 
    Else 'useful meetings. accept and send response. 
    meetingTime = oAppt.Start 
    Set oResponse = oAppt.Respond(olMeetingAccepted, True) 
    oResponse.Send 
    MsgBox ("Meeting accepted " + subjectName + " from " + senderName + " for " + meetingTime) 
End If 

debugs: 
If Err.Description <> "" Then MsgBox (Err.Description + " - Source: AutoAcceptMeetings") 
End Sub 
+0

该错误意味着oAppt不算什么,这似乎意味着oRequest没有AssociatedAppointment。不知道这意味着什么,但这就是我读错误的方式。 –

+0

感谢道格,这将有道理。但是,我能够从oAppt正确获取meetingTime(并且在我测试时正确打印出来)。 –

+0

当然。你可以接受有错误的约会吗? (在前端)。 –

回答

0

所以,问题是,我试图发送一个“回应”的会议要求,并不需要任何响应。在前端(outlook)上,如果您接受会议,它会进入您的日历并且请求会被删除,但没有回复给组织者(人们在邀请一个大型团体时会这样做,并不一定关心谁会参加)。

无论如何,我的解决方案是在实际回应请求之前进行简单的检查。

If (oAppt.ResponseRequested) Then 
    Set oResponse = oAppt.Respond(olMeetingAccepted, True) 
    oResponse.Send 
End If 
相关问题