2016-02-12 37 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 
相關問題