You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

技术需求:实现Outlook邮件附件文件名列表批量复制到剪贴板

解决方案:一次性获取Outlook邮件所有附件文件名

我懂你的困扰——之前的代码要么挨个弹窗刷得人烦躁,要么只复制第一个附件名,完全没法高效处理多附件的场景。下面两个改进后的VBA宏可以完美解决你的需求:

方案1:弹窗显示所有附件文件名(方便复制)

这个宏会把选中邮件的所有附件文件名用换行拼接起来,一次性弹出消息框,你直接全选复制就行:

Sub ListAllAttachmentsInMsgBox()
    Dim selectedMail As Outlook.MailItem
    Dim attachmentsList As String
    Dim attachment As Outlook.Attachment
    
    ' 确保选中了一封邮件
    If ActiveExplorer.Selection.Count = 0 Then
        MsgBox "请先选中一封邮件!", vbExclamation
        Exit Sub
    End If
    
    Set selectedMail = ActiveExplorer.Selection.Item(1)
    attachmentsList = "附件文件名列表:" & vbCrLf & vbCrLf
    
    ' 遍历所有附件,拼接文件名
    For Each attachment In selectedMail.Attachments
        attachmentsList = attachmentsList & attachment.DisplayName & vbCrLf
    Next attachment
    
    ' 一次性弹窗显示所有文件名
    MsgBox attachmentsList, vbInformation, "所有附件文件名"
End Sub

方案2:直接把所有附件文件名复制到剪贴板

这个宏会自动把所有附件文件名(换行分隔)复制到剪贴板,你直接粘贴到订单系统就行:

Sub CopyAllAttachmentsToClipboard()
    Dim selectedMail As Outlook.MailItem
    Dim attachmentsList As String
    Dim attachment As Outlook.Attachment
    Dim clipboard As MSForms.DataObject
    
    ' 确保选中了一封邮件
    If ActiveExplorer.Selection.Count = 0 Then
        MsgBox "请先选中一封邮件!", vbExclamation
        Exit Sub
    End If
    
    Set selectedMail = ActiveExplorer.Selection.Item(1)
    attachmentsList = ""
    
    ' 遍历所有附件,拼接文件名
    For Each attachment In selectedMail.Attachments
        attachmentsList = attachmentsList & attachment.DisplayName & vbCrLf
    Next attachment
    
    ' 移除最后多余的换行(可选)
    If Len(attachmentsList) > 0 Then
        attachmentsList = Left(attachmentsList, Len(attachmentsList) - 2)
    End If
    
    ' 复制到剪贴板
    Set clipboard = New MSForms.DataObject
    clipboard.SetText attachmentsList
    clipboard.PutInClipboard
    
    MsgBox "所有附件文件名已复制到剪贴板!", vbInformation
End Sub

使用说明:

  1. 打开Outlook,按下Alt + F11打开VBA编辑器
  2. 右键点击左侧的Project窗口,选择插入模块
  3. 把上面的代码粘贴到模块里
  4. 回到Outlook,选中目标邮件,按下Alt + F8,选择对应的宏运行即可

注意:如果运行时提示找不到MSForms.DataObject,需要在VBA编辑器里依次点击工具引用,勾选Microsoft Forms 2.0 Object Library

内容的提问来源于stack exchange,提问作者Mike Ver Duin

火山引擎 最新活动