2015-08-10 2 views
1

Я следующий код VBA Access, который работает отлично за исключением того факта, что, когда пользователь решил закрыть окно Outlook, и решил не отправлять электронную почту интерфейс доступа замерзает:Access VBA SendObject ошибка

Dim strSubject As String 
strSubject = "Receipt number: " & [Reports]![RCPT_MAIN_EMAIL].[RECEIPT] 

Dim strBody As String 
strBody = "Dear Sir/Madam," & vbCrLf 
strBody = strBody & "Attached Receipt number " & [Reports]![RCPT_MAIN_EMAIL].[RECEIPT] & " for your payment." & vbCrLf 


    DoCmd.SendObject acReport, "RCPT_MAIN_EMAIL", acFormatPDF, [Reports]![RCPT_MAIN_EMAIL].[Email], "[email protected]", "", strSubject, strBody, True, "" 
'DoCmd.Close acReport, "RCPT_MAIN_EMAIL", acSaveNo 


send_res_email_Exit: 
DoCmd.Close acReport, "RCPT_MAIN_EMAIL", acSaveNo 
    Exit Function 

send_res_email_Err: 

    MsgBox Error$ 
    Resume send_res_email_Exit 


End Function 

Это в основном открывает скрытую форму, считывает значение EMAIL и отправляет электронное письмо через Outlook. Но если пользователь решил закрыть окно сообщения Outlook, он дает сообщение о том, что SendObject был отменен и зависает.

ответ

0

В вашем случае я бы просто добавить

On Error Resume Next 

до DoCmd.SendObject линии.

Если вам необходимо принять меры, когда сообщение не отправляется, сделать

On Error Resume Next 
DoCmd.SendObject acReport ... 
If Err.Number <> 0 Then 
    ' User has canceled 
End If 
Смежные вопросы