【问题标题】:DoCmd.SendObject Method and Error 3211 Access 2013 VBADoCmd.SendObject 方法和错误 3211 Access 2013 VBA
【发布时间】:2016-04-22 19:09:59
【问题描述】:

我很难找到有关此特定问题的任何信息。我发现的唯一信息是这似乎是 Access 2010 中的一个错误(我希望他们在 2013 年修复了它,而我只是不知道解决方案)。

我在 access vba 中使用 DoCmd.SendObject 方法在命令按钮的 on_click 事件中通过电子邮件在 Outlook 中发送报告。我的代码似乎工作得很好,并且电子邮件按预期发出。问题是,在运行代码后,即使报表已关闭,我也无法对用作报表记录源的表进行任何更改。我收到错误 3211“无法锁定记录源,因为它正在使用中.....”

我已删除 DoCmd.SendObject 代码,对表进行更改没有问题,我也没有收到错误消息。我假设该方法本身在 Outlook 和表格之间建立了某种链接或连接。

所以,我的问题是如何解决这个问题。使用 DoCmd.SendObject 方法后,是否有 VBA 代码可以终止 Outlook 和表之间的链接/连接?

【问题讨论】:

  • 我没有一个好的答案。如果您有单独的前端和后端,您可以尝试将链接放到前端的表中并重新创建它。这可能会有所帮助。
  • 没关系,约翰。我想删除链接可能会起作用。我实际上最终使用了另一种方法来发送电子邮件(我将在下面的答案中发布我的解决方案)。

标签: ms-access vba ms-access-2013 outlook-2013


【解决方案1】:

致各位

我最终使用了另一种发送电子邮件的方法,最终解决了我的所有问题,并且比 SendObject 方法更灵活。下面是我使用的代码,希望对你有用:

(对于那些认为代码有用的人来说,我只是一个注释:我在其他地方使用代码创建了一个 pdf 文件,这就是为什么 pdf 文件名是一个变量)

'Create a new e-mail and attach previously created pdf

            Dim strLocation As String
            Dim OutApp As Object
            Dim OutMail As Object
            Dim EmailTo As Variant
            Set OutApp = CreateObject("Outlook.Application")
            Set OutMail = OutApp.CreateItem(0)

            EmailTo = DLookup("Email", "tblTempProcessing")

                With OutMail
                .To = EmailTo
                .CC = ""
                .BCC = ""
                .Subject = "Subject Text"
                .Body = "Body Text"
                .Attachments.Add ("C:\Folder\SubFolder\" & Variable & ".PDF")
                .Send
                End With
                On Error GoTo 0

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-29
    • 1970-01-01
    • 1970-01-01
    • 2016-01-22
    • 1970-01-01
    相关资源
    最近更新 更多