我有一个带有多个组合框的访问表单,其中包含涉众信息,包括电子邮件。并非每个记录都填充了所有组合框。我在表单上有一个按钮,单击后将发送SendObject。我希望该按钮向给定记录中的所有利益相关者发送电子邮件。我希望能够将SendObject命令的“ To”部分中的输入分开,但是我有两个主要问题:
当列出我想包含在SendObject的“至”部分中的组合框时,VBA不能将分号识别为列表分隔符。它给了我一个“ Expected:Statement End”编译错误消息。我已将控制面板中的列表分隔符从逗号更改为分号,但这尚未解决问题。出现此错误时正在使用的代码示例如下:
DoCmd.SendObject acSendNoObject, , , Me.cmb_UnitPOC_ST.Column(1);& Me.cmb_LeadUnitST2.Column(1);Me.cmb_LeadUnitST3.Column(1);Me.cmb_LeadUnitST4.Column(1);Me.cmb_LeadUnitST5.Column(1), , , _
Me.txb_ProjectName & " (" & Me.txb_ID & "): " & Me.[Lead], , True
我的解决方法是用&“;”分隔组合框。 &。这摆脱了"Expected: End of Statement"
编译错误消息。但是,如果有两个以上连续的空组合框,则在单击按钮并尝试执行SendObject命令时会收到一条错误消息。该错误消息指出“未知的邮件收件人”。通过反复试验,我发现问题是来自多个空字段的连续分号。出现此错误时正在使用的代码示例如下:
DoCmd.SendObject acSendNoObject, , , Me.cmb_UnitPOC_ST.Column(1) & ";" & Me.cmb_LeadUnitST2.Column(1) & ";" & Me.cmb_LeadUnitST3.Column(1) & ";" & Me.cmb_LeadUnitST4.Column(1) & ";" & Me.cmb_LeadUnitST5.Column(1), , , _
Me.txb_ProjectName & " (" & Me.txb_ID & "): " & Me.[Lead], , True
我已经尝试在&" "&
中放置几个不同的符号,但是Outlook需要用分号分隔电子邮件,并且无法识别逗号,其他符号,空格或制表符之类的分隔电子邮件(许多人会使用此符号因此我不能只更改Outlook的设置来解决此问题)。我尝试通过在单独的文本框中编译电子邮件并将该文本框用作“收件人”输入来添加其他步骤,但是遇到了类似的问题。我尝试使用逗号作为列表分隔符,但是会产生与分号相同的编译错误消息。我尝试将控制面板中的列表分隔符更改为"/"
和"|"
,但VBA不能将其识别为列表分隔符。
感谢您的任何帮助。
谢谢,
道格
To
部分采用字符串。如果您有多个电子邮件地址,则必须将它们合并在一起,Outlook期望;
作为分隔符。
进行帮助,可以生成您的To
地址列表。像这样的东西:
Public Function AddMailAddress(address As String, newaddress As String)
If (address = "") And (newaddress = "") Then
Exit Function
End If
If address = "" Then
address = newaddress
Else
If Not newaddress = "" Then
If VBA.Right(address, 1) = ";" Then
address = address & newaddress
Else
address = address & ";" & newaddress
End If
End If
End If
AddMailAddress = address
End Function
然后,一个一个地添加您的邮件地址:
Dim toAddress as string
Dim subject as string
toAddress = AddMailAddress(toAddress, nz(Me.cmb_UnitPOC_ST.Column(1),""))
toAddress = AddMailAddress(toAddress, nz(Me.cmb_LeadUnitST2.Column(1),""))
toAddress = AddMailAddress(toAddress, nz(Me.cmb_LeadUnitST3.Column(1),""))
toAddress = AddMailAddress(toAddress, nz(Me.cmb_LeadUnitST4.Column(1),""))
toAddress = AddMailAddress(toAddress, nz(Me.cmb_LeadUnitST5.Column(1),""))
subject = Me.txb_ProjectName & " (" & Me.txb_ID & "): " & Me.[Lead]
然后像这样使用它
DoCmd.SendObject acSendNoObject, To:= toAddress, Subject:= subject, EditMessage:= True
PS:辅助功能只是一个概念,您必须根据需要对其进行调整