从列表框中选择多个项目以附加到电子邮件中

Posted

技术标签:

【中文标题】从列表框中选择多个项目以附加到电子邮件中【英文标题】:Select Multiple Items from Listbox to Attach in Email 【发布时间】:2016-01-06 20:19:33 【问题描述】:

我已经建立了一个包含多个文件的数据库,例如用户手册。我在 Access 中创建的表单之一是一个搜索字段,它使用查询来查找用户正在查找的特定文件。搜索将结果缩小到一个列表框中,双击将为您打开文件。结果还根据文档类型缩小到选项卡中。我已经实现了一项功能,如果您单选(文件)结果以突出显示它,然后单击一个按钮,它会将该文件插入到 MS Outlook 中的新消息中。这很好用,但我想在同一封电子邮件中选择多个文件。我一直在网上到处搜索,似乎找不到合适的解决方案。我将在下面列出我的代码。

这第一部分是在我的搜索表单中编码的。

Private Sub cmdEMail_Click()

Dim fpath As String

'Find out what tab user is on
Select Case Me!tabResults.Value
Case 0
    If IsNull(lstManResults.Column(5, lstManResults.ListIndex)) Then
        Exit Sub
    Else
        fpath = lstManResults.Column(5, lstManResults.ListIndex)
    End If
Case 1
    If IsNull(lstBullResults.Column(5, lstBullResults.ListIndex)) Then
        Exit Sub
    Else
        fpath = lstBullResults.Column(5, lstBullResults.ListIndex)
    End If
Case 2
    If IsNull(lstSubResults.Column(5, lstSubResults.ListIndex)) Then
        Exit Sub
    Else
        fpath = lstSubResults.Column(5, lstSubResults.ListIndex)
    End If
Case 3
        If IsNull(lstPicResults.Column(5, lstPicResults.ListIndex)) Then
        Exit Sub
    Else
        fpath = lstPicResults.Column(5, lstPicResults.ListIndex)
    End If
Case 4
    If IsNull(lstWarrResults.Column(5, lstWarrResults.ListIndex)) Then
        Exit Sub
    Else
        fpath = lstWarrResults.Column(5, lstWarrResults.ListIndex)
    End If
Case 5
    If IsNull(lstPartResults.Column(5, lstPartResults.ListIndex)) Then
        Exit Sub
    Else
        fpath = lstPartResults.Column(5, lstPartResults.ListIndex)
    End If
Case 6
    If IsNull(lstSchemResults.Column(5, lstSchemResults.ListIndex)) Then
        Exit Sub
    Else
        fpath = lstSchemResults.Column(5, lstSchemResults.ListIndex)
    End If
Case 7
    If IsNull(lstAppResults.Column(5, lstAppResults.ListIndex)) Then
        Exit Sub
    Else
        fpath = lstAppResults.Column(5, lstAppResults.ListIndex)
    End If
Case 8
    If IsNull(lstSpecResults.Column(5, lstSpecResults.ListIndex)) Then
        Exit Sub
    Else
        fpath = lstSpecResults.Column(5, lstSpecResults.ListIndex)
    End If
Case 9
    If IsNull(lstInternalResults.Column(5, lstInternalResults.ListIndex)) Then
        Exit Sub
    Else
        fpath = lstInternalResults.Column(5, lstInternalResults.ListIndex)
    End If
Case 10
    If IsNull(lstAddenSuppResults.Column(5, lstAddenSuppResults.ListIndex)) Then
        Exit Sub
    Else
        fpath = lstAddenSuppResults.Column(5, lstAddenSuppResults.ListIndex)
    End If
Case 11
    If IsNull(lstVideoResults.Column(5, lstVideoResults.ListIndex)) Then
        Exit Sub
    Else
        fpath = lstVideoResults.Column(5, lstVideoResults.ListIndex)
    End If
Case 12
    If IsNull(lstTechTipsResults.Column(5, lstTechTipsResults.ListIndex)) Then
        Exit Sub
    Else
        fpath = lstTechTipsResults.Column(5, lstTechTipsResults.ListIndex)
    End If
Case 13
    If IsNull(lstArchiveResults.Column(5, lstArchiveResults.ListIndex)) Then
        Exit Sub
    Else
        fpath = lstArchiveResults.Column(5, lstArchiveResults.ListIndex)
    End If
End Select

EmailDoc fpath

End Sub

这段代码是我创建的用于处理电子邮件操作的函数:

Function EmailDoc(ByVal fpath As String)

'Get Outlook if it isn't open already
Set outlookApp = CreateObject("Outlook.Application")
Set outlookItem = outlookApp.CreateItem(0)

If Err <> 0 Then
    'Outlook wasn't running, start it
    Set outlookApp = CreateObject("Outlook.Application")
    Started = True
End If

With outlookItem
    .to = ""
    .Subject = "Requested Document"
    .Body = "Thank you"
    .attachments.Add (fpath)

    .display

End With

End Function

任何帮助都将不胜感激。

【问题讨论】:

【参考方案1】:

试试这两个链接:

cycling through values in a MS Access list box

https://support.microsoft.com/en-us/kb/827423

它们显示了处理多个列表框选择的两种不同方式。

【讨论】:

我认为这样的事情会让你朝着正确的方向前进。 fontstuff.com/access/acctut18.htm 或 fontstuff.com/access/acctut19.htm

以上是关于从列表框中选择多个项目以附加到电子邮件中的主要内容,如果未能解决你的问题,请参考以下文章

VBA从Excel中的电子表格中的列表框中获取值

如何从下拉列表中选择多个项目并将多个值插入 MYSQL

SharePoint Workflow - 电子邮件多个列表项

高级过滤器,为1行选择了多个条件

访问使用列表框中选择的项目更新子表单

从 Google 电子表格的下拉列表中选择多个值