【问题标题】:Access VBA SendObject error访问 VBA SendObject 错误
【发布时间】:2015-08-18 22:30:32
【问题描述】:

我有以下 VBA Access 代码,它工作正常,除了当用户决定关闭 Outlook 窗口并决定不发送电子邮件时,Access 界面冻结:

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], "123@test.com", "", 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 已取消并冻结。

【问题讨论】:

    标签: vba ms-access


    【解决方案1】:

    在你的场景中,我会简单地添加一个

    On Error Resume Next
    

    DoCmd.SendObject 行之前。

    如果您需要在消息未发送时采取措施,请执行

    On Error Resume Next
    DoCmd.SendObject acReport ...
    If Err.Number <> 0 Then
        ' User has canceled
    End If
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-11
      • 2014-05-12
      • 2018-09-21
      • 1970-01-01
      相关资源
      最近更新 更多