Microsoft Access Command VBA不会将分号识别为列表分隔符

问题描述 投票:0回答:1

我有一个带有多个组合框的访问表单,其中包含涉众信息,包括电子邮件。并非每个记录都填充了所有组合框。我在表单上有一个按钮,单击后将发送SendObject。我希望该按钮向给定记录中的所有利益相关者发送电子邮件。我希望能够将SendObject命令的“ To”部分中的输入分开,但是我有两个主要问题:

  1. 当列出我想包含在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

  2. 我的解决方法是用&“;”分隔组合框。 &。这摆脱了"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不能将其识别为列表分隔符。

感谢您的任何帮助。

谢谢,

道格

ms-access outlook access-vba
1个回答
0
投票

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:辅助功能只是一个概念,您必须根据需要对其进行调整

© www.soinside.com 2019 - 2024. All rights reserved.