vba - MS Access - VBA:使用表格中的电子邮件地址发送电子邮件
问题描述
使用 MS Access VBA。设置如下:
tblUsers 包含 UserID、UserName、UserSecurityLevel、UserEmail
tblStewards 包含 AreaID、AreaName、Stewards,其中 Stewards 设置为来自查找查询“SELECT tblUsers.ID, tblUsers.UserName FROM tblUsers”的组合框,并且我允许多个值(例如,每个区域有多个管理员);Stewards 字段的数据类型为短文本
frmStewardRequest 具有 Record Source tblStewards,旨在供用户请求区域管家添加新项目;它包含 cmbAreaName、txtStewards(基于 cmbAreaName 和 Control Source Stewards 自动填充)、一些用于提供所请求项目的开放文本字段和 btnSubmitRequest
对于 btnSubmitRequest,我有一个 On Click 事件,它使用此 VBA 代码向区域管理员生成一封电子邮件:
Dim strEmailTo As String
Dim strTxtBody As String
strEmailTo = DLookup("[UserEmail]", "tblUsers", "ID = " & Me.txtSteward)
strTxtBody = "I need a new item in " & Me.cmbAreaName & "..."
DoCmd.SendObject , , acFormatTXT, strEmailTo, , , "New Item Request", strTxtBody, False
获取区域管理员的电子邮件地址时出现问题:这似乎不是一个字符串。如何获取电子邮件地址以便正确发送?(不太重要的问题,有没有办法防止弹出框接受发送这封邮件的风险?)
解决方案
我就是这样做的。
Option Compare Database
Option Explicit
' This database and all the code therein is © 1999-2002 Arvin Meyer arvinm@datastrat.com
' You are free to use this code and this database in an application
' as long as you do not publish it without the author's permission.
' Additionally, you are required to include this copyright notice in the application.
Private Sub Form_Open(Cancel As Integer)
On Error GoTo Err_OF
Dim db As Database
Dim i As Integer
Dim contr As Container
Dim strRptList As String
Dim strRptName As String
Dim Length As Integer
Set db = CurrentDb()
Set contr = db.Containers("Reports")
strRptList = ""
For i = 0 To contr.Documents.Count - 1
strRptName = contr.Documents(i).name
If strRptList <> "" Then strRptList = strRptList & "; "
Length = Len(strRptName)
strRptList = strRptList & strRptName
Next i
Me!lstRpt.RowSource = strRptList
Exit_OF:
Exit Sub
Err_OF:
MsgBox Err & " " & Error, , "Report Open"
Resume Exit_OF
End Sub
Private Sub cmdEmail_Click()
On Error GoTo Err_cmdEmail_Click
Dim strDocName As String
Dim strEmail As String
Dim strMailSubject As String
Dim strMsg As String
strDocName = Me.lstRpt
strEmail = Me.txtSelected & vbNullString
strMailSubject = Me.txtMailSubject & vbNullString
strMsg = Me.txtMsg & vbNullString & vbCrLf & vbCrLf & "Your Name" & _
vbCrLf & "MailTo:youremail@nowhere.com"
DoCmd.SendObject objecttype:=acSendReport, _
ObjectName:=strDocName, outputformat:=acFormatHTML, _
To:=strEmail, Subject:=strMailSubject, MessageText:=strMsg
Exit_cmdEmail_Click:
Exit Sub
Err_cmdEmail_Click:
MsgBox Err.Description
Resume Exit_cmdEmail_Click
End Sub
Private Sub Label15_Click()
Dim hplMail As String
hplMail = "#MailTo:email_senate@datastrat.com#"
Application.FollowHyperlink HyperlinkPart(hplMail, acAddress)
End Sub
Private Sub lstRpt_Click()
Me.cmdEmail.Enabled = True
End Sub
Private Sub lstMailTo_Click()
Dim varItem As Variant
Dim strList As String
With Me!lstMailTo
If .MultiSelect = 0 Then
Me!txtSelected = .Value
Else
For Each varItem In .ItemsSelected
strList = strList & .Column(0, varItem) & ";"
Next varItem
strList = Left$(strList, Len(strList) - 1)
Me!txtSelected = strList
End If
End With
End Sub
推荐阅读
- javascript - 用户单击 JavaScript 中的浏览器后退按钮后如何将用户重定向到另一个页面
- stm32 - 在未知数量的文件中查找最新文件的程序
- django - Django 中的自定义模型字段 | 同时使用 integerchoice 和 textarea
- javascript - 引导展开/折叠不关闭最后一个打开的项目
- php - show processlist 一次又一次地列出一个特定的进程
- python - 我需要在写入文件方面为初学者完善一个项目
- css - SVG 背景:无效的属性值,但没有编码问题,没有大小问题,正确的 SVG 数据
- c++ - 在对数据集执行操作时,for 循环对性能有何影响?
- python - LocustIO - 如何只发送一次 DELETE 查询
- python - 为什么在我的代码中使用“is True”时会打印一个空列表?