【问题标题】:Access Timer VBA to send email running only once访问 Timer VBA 以发送仅运行一次的电子邮件
【发布时间】:2018-02-19 22:54:37
【问题描述】:

我有一个包含 2 个子表单的表单。一个子表单有一个 30 分钟的计时器来刷新运行良好的数据。另一个子表单有以下代码在设定的时间发送电子邮件

If DLookup("SCHEDULEDATETIME", "TBLSCHEDULERNEW", "SCHEDULETYPE='AWAITREG'") >= Date Then
    End
End If

If TimeValue(Now()) > #9:00:00 AM# Then
        Set oApp = CreateObject("Outlook.application")        
        Set oMail = oApp.CreateItem(olMailItem)
        oMail.Body = "email"
        oMail.Subject = "Test Subject"
        oMail.To = "xxx@xxx.com"
        oMail.Send
        Set oMail = Nothing
        Set oApp = Nothing
End If

strsql = "update TBLSCHEDULERNEW set SCHEDULEDATETIME =trunc(sysdate) WHERE SCHEDULETYPE='AWAITREG';"

With MyCon
    .Open "xxx", "xxx", "xxx"
    .Execute strsql
    .Close
End With

我有额外的代码来检查今天是否已经发送了电子邮件,这工作正常

这只运行一次。我必须在设计视图中打开表单,然后再次打开表单视图,代码才能开始工作。为什么会这样?

我需要以这种方式而不是 SendObject 来安排电子邮件发送,因为我需要附加一个格式化的 Excel 电子表格。

编辑 - 我现在不认为这与发送电子邮件有任何关系,因为似乎根本就调用了代码 - 我只用 msgbox 进行了测试。

【问题讨论】:

  • 请分享所有代码。当前代码不包含任何内容,只能运行一次。
  • @ErikvonAsmuth 完成。
  • 我仍然没有看到任何关于如何调用代码的细节,以及为什么这只应该发生一次。
  • @ErikvonAsmuth 该子表单的计时器为 60000。On Timer 事件有一行 SendAwaitingRegReport 调用我的问题中的代码。
  • 你没有包括那个。为什么它只会运行一次?

标签: ms-access outlook vba


【解决方案1】:

End 就是这个意思。

您的代码将停止,所有变量将被清除。可能不是你想要的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-02
    • 1970-01-01
    • 2020-09-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-09
    相关资源
    最近更新 更多