【问题标题】:Runtime error 287. Sending Emails through Outlook using VBA in Access运行时错误 287。在 Access 中使用 VBA 通过 Outlook 发送电子邮件
【发布时间】:2020-07-09 06:30:24
【问题描述】:

我有一个案例,一位用户希望收到有关何时将交付添加到 Access 数据库的通知。我能想到的最简单的方法是通过 Outlook 2010 设置自动电子邮件。以下代码是我所拥有的:

Dim oApp As Outlook.Application
Dim oMail As MailItem
Dim varDnoteRef2 As String
Dim varuser As String
varuser = DLookup("[Employee_Name]", "employees", "[Employee_ID]=" & TempVars!gloggedin)
varDnoteRef2 = DLast("Supplier_Dnote_Ref", "Supplier_Dnotes")

Set oApp = CreateObject("Outlook.application")
Set oMail = oApp.CreateItem(olMailItem)
oMail.Body = "A Delivery Note has been added to the Database by " & varuser & " on " & Now() & "." & _
             vbNewLine & "Delivery Note: " & varDnoteRef2
oMail.Subject = "Automatic Notification: Delivery Note"
oMail.To = "Example@Email.co.uk"
oMail.Send
Set oMail = Nothing
Set oApp = Nothing

当激活代码的人打开 Outlook 时,此代码可以完美运行。但是,当用户没有启动 Outlook 时,用户会在 oMail.send 行收到错误消息。

error #287 error line 0 应用程序定义或对象定义的错误。

他们得到的是桌面上的一个小图标,它是带有齿轮/齿轮和消息的 Outlook 符号 another program or application is using outlook。这是我所期望的。但是为什么发送失败呢?

如何解决此错误/有解决方案吗?

编辑(更新)

更奇怪的是,当我使用 F8 单步执行我的代码时。有用!! 但是当我从表单操作调用代码时仍然不是,例如button_on_click

【问题讨论】:

  • 如果你有 SMTP 服务器(不仅仅是 Exchange 服务器),你可以考虑Blat(免费,命令行)或Chilkat Email ActiveX(商业,非常强大)。
  • 我的代码非常相似......所以我不知道你的代码有什么问题。我的将打开 Outlook。我发现的唯一区别是 oMail 的 Dim。我的是Dim oMail As Outlook.MailItem。我想不妨试试看,但我怀疑这是问题所在。
  • 您也可能在通过 Outlook 发送时遇到安全问题,因为它需要手动确认每封外发电子邮件,并且为了禁用它,用户需要管理员权限。如果 Outlook 不是强制性的,我可以共享 VBA 代码以通过 Gmail 发送。
  • @Cyber​​Claw 正如预期的那样,这并没有改变结果。我开始质疑 Outlook 信任中心设置是否需要更改。

标签: vba ms-access outlook outlook-2010


【解决方案1】:

嗯,这是我以前从未遇到过的事情,但是,我找到了解决方案。

错误消息本身让我想知道为什么发送命令无法识别定义的应用程序。我质疑代码是否运行得太快。 (我不知道这个灯泡时刻是从哪里来的,但它已经解决了这个问题)。

我只是在发送操作之前插入了一个循环来强制延迟。我这样做是因为 Access 无法识别 application.wait

到目前为止,测试似乎成功了!

Dim T1 As Variant
Dim T2 As Variant

T1 = Now()
T2 = DateAdd("s", 1, T1)

Do Until T2 <= T1
    T1 = Now()
Loop
oMail.Send

此程序不会经常运行,一天最多可能运行 5 次。所以我不担心一秒钟的延迟会导致任何实时问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-09-28
    • 2013-10-15
    • 2021-05-11
    • 1970-01-01
    • 2022-08-21
    • 2023-01-07
    • 2020-05-16
    相关资源
    最近更新 更多