gpt4 book ai didi

vba - 运行时错误 287。在 Access 中使用 VBA 通过 Outlook 发送电子邮件

转载 作者:行者123 更新时间:2023-12-02 04:35:11 24 4
gpt4 key购买 nike

在我的情况下,一位用户希望收到有关何时将交付添加到 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 application-defined or object-defined error.

他们在桌面上看到的是一个小图标,它是带有齿轮/齿轮的 Outlook 符号和消息,表示另一个程序或应用程序正在使用 Outlook。这正是我所期望的。但为什么发送失败呢?

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

Edit (Update)

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

最佳答案

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

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

我只是插入了一个循环以在发送操作之前强制延迟。我这样做是因为 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 次。所以我并不担心一秒的延迟会导致任何实时问题。

关于vba - 运行时错误 287。在 Access 中使用 VBA 通过 Outlook 发送电子邮件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36328068/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com