使用 VBA 从 MS Access 发送电子邮件

Posted

技术标签:

【中文标题】使用 VBA 从 MS Access 发送电子邮件【英文标题】:Using VBA to send email from MS Access 【发布时间】:2021-11-21 21:26:24 【问题描述】:

你好 *** 成员

我是一名长期使用 MS Access 的用户,他已远离 VBA 和 SQL,并创建了一个表单,并希望使用从子表单捕获数据的按钮(基于查询)发送电子邮件。

我使用这个YouTube 视频作为指导,但遇到了卡住(从“msg =...”开始,当我尝试运行代码时(如下)。

不胜感激。

Private Sub cmd_EmailContact_Click()

    Dim Msg As String
    
    **msg = "Dear " & First name & ",<P>" & _
        Student First name & "has been successfully been loaded on the platform" & ",<P>" & _
        "Student login details on the platform are:" & ",<P>" & _
        "Username:" & Username & ",<P>" & _
        "Password:" & Password**

    Dim O As Outlook.Application
    Dim M As Outlook.MailItem
    
    Set O = New Outlook.Application
    Set M = O.CreateItem(olMailItem)
    
    With M
        .BodyFormat = olFormathtml
        .HTMLBody = Msg
        .To = Email
        .Subject = "Student available on OARS"
        .Display        
    End With
    
    Set M = Nothing
    Set O = Nothing

End Sub

【问题讨论】:

这能回答你的问题吗? Sending Email using Access VBA 什么是Student First name?你认为这是某种变量名吗? fwiw,我不建议使用 youtube 来学习如何编码。 您真正要问的是“如何使用变量在多行上创建字符串?”因为其余代码都很好(与实际从任何地方发送电子邮件无关),尽管我认为不需要.BodyFormat 尝试使用msg = "Test" 而不是设置msg 的代码块,它应该可以工作。 感谢您对 BraX 的建议。我会试试 msg = "Test"。我想在电子邮件的正文中包含以下变量。在表单上的查询中填充变量。 - 名字(教师姓名) - 学生名字 - 用户名 - 密码 【参考方案1】:

要以 HTML 格式发送电子邮件,您需要使用 HTML 标记格式化正文并设置olMailItem(电子邮件)的HTMLBody 属性,如下所示。

该示例使用后期绑定(无需引用 Outlook),这意味着它可以在安装了不同版本的 Outlook 时运行。

Private Sub cmd_EmailContact_Click()

    Dim firstName As String, _
        studentFirstName As String, _
        userName As String, _
        password As String, _
        email As String, _
        body_ As String
    
    'provide values
    firstName = "ABC"
    studentFirstName = "XYZ"
    userName = "User"
    password = "Pass"
    email = "foo@bar.com"
    
    'build body
    body_ = "<p> Dear" & firstName & ", </p>" _
          & "<p>" & studentFirstName & " has been successfully been loaded on the platform. </p>" _
          & "<p> Student login details on the platform are: </p>" _
          & "<p> Username: " & userName & "</p>" _
          & "<p> Password: " & password & "</p>"

    'send email
    With CreateObject("Outlook.Application")
        With .CreateItem(0) 'olMailItem
            .BodyFormat = 2 'olFormatHTML
            .To = email
            .Subject = "Student available on OARS"
            .HTMLBody = "<html><head></head><body>" & body_ & "</body></html>"
            .Display
        End With
    End With
    
End Sub

您需要为以下变量提供值:

名字 学生名字 用户名 密码 电子邮件

【讨论】:

以上是关于使用 VBA 从 MS Access 发送电子邮件的主要内容,如果未能解决你的问题,请参考以下文章

MS Outlook 干扰 Access vba 程序

VBA Excel - 从 MS Access 将列名保存到电子表格

有没有办法用 vba 在 MS-Access 中截屏?

从 MS Access 生成带有超链接的电子邮件

如何从同一数据库的 VBA 代码中的 MS ACCESS 中提取字段

使用 VBA 激活打开的 MS Access 文件以发送密钥