跳至主要内容

如何在Outlook中带原始附件回复所有?

Author: Xiaoyang Last Modified: 2025-05-07

是否曾在Outlook中点击“全部回复”时丢失了原始附件?这确实令人沮丧!想知道在回复所有人时如何保留这些附件吗?是的,这是可以做到的!让我们来探索一下如何在回复中包含原始附件,让邮件管理变得无缝且高效。请继续关注!

使用VBA代码带原始附件回复所有

使用Kutools for Outlook带原始附件回复所有


使用VBA代码带原始附件回复所有

Outlook中没有直接处理此任务的功能,但您可以应用以下VBA代码来实现它。请按照以下步骤操作:

1. 启动Outlook,然后按住ALT + F11键打开Microsoft Visual Basic for Applications窗口。

2. 在Microsoft Visual Basic for Applications窗口中,双击Project1(VbaProject.OTM)窗格中的 ThisOutlookSession以打开模块,然后将以下代码复制并粘贴到空白模块中。

VBA代码:带原始附件回复所有:

Sub ReplyAllWithAttachments()
'Updateby Extendoffice
Dim xItem As Object
On Error Resume Next
Select Case TypeName(Outlook.Application.ActiveWindow)
Case "Explorer"
For Each xItem In Outlook.Application.ActiveExplorer.Selection
GetReplyItem xItem
Next
Case "Inspector"
Set xItem = Outlook.Application.ActiveInspector.CurrentItem
GetReplyItem xItem
End Select
Set xItem = Nothing
End Sub
Sub GetReplyItem(Item As Object)
Dim xReplyMailItem As Outlook.MailItem
On Error Resume Next
If Not Item Is Nothing Then
Set xReplyMailItem = Item.ReplyAll
GetAttachments Item, xReplyMailItem
xReplyMailItem.Display
'xReplyMailItem.Send
Item.UnRead = False
End If
Set xReplyMailItem = Nothing
End Sub
Sub GetAttachments(xSourceItem, xTargetItem)
Dim xFSO As Scripting.FileSystemObject
Dim xTmpPath As String
Dim xAttachment As Attachment
Dim xTmpFile As String
On Error Resume Next
Set xFSO = New Scripting.FileSystemObject
xTmpPath = CreateObject("shell.Application").NameSpace(5).self.Path & "\TmpAttachments\"
If xFSO.FolderExists(xTmpPath) = False Then
MkDir xTmpPath
End If
For Each xAttachment In xSourceItem.Attachments
If IsEmbeddedAttachment(xAttachment) = False Then
xTmpFile = xTmpPath & xAttachment.FileName
xAttachment.SaveAsFile xTmpFile
xTargetItem.Attachments.Add xTmpFile, , , xAttachment.DisplayName
xFSO.DeleteFile xTmpFile
End If
Next
If xFSO.FolderExists(xTmpPath) Then
Kill xTmpPath
End If
Set xFSO = Nothing
End Sub
Function IsEmbeddedAttachment(Attach As Attachment)
Dim xAttParent As Object
Dim xCID As String, xID As String
Dim xHTML As String
On Error Resume Next
Set xAttParent = Attach.Parent
xCID = ""
xCID = Attach.PropertyAccessor.GetProperty("http://schemas.microsoft.com/mapi/proptag/0x3712001F")
If xCID <> "" Then
xHTML = xAttParent.HTMLBody
xID = "cid:" & xCID
If InStr(xHTML, xID) > 0 Then
IsEmbeddedAttachment = True
Else
IsEmbeddedAttachment = False
End If
End If
End Function
doc reply all with attachment 1

3. 然后点击Microsoft Visual Basic for Applications窗口中的 工具 > 引用,在弹出的References-Project1对话框中,从可用引用列表框中勾选Microsoft Scripting Runtime选项,见截图:

doc reply all with attachment 9

4. 然后保存并关闭代码窗口,接着您可以将宏按钮添加到快速访问工具栏中。

5. 打开您想带附件回复所有人的邮件,在消息窗口中选择自定义快速访问工具栏下拉菜单中的更多命令,见截图:

doc reply all with attachment 2

6. 在Outlook选项对话框中,执行以下操作:

(1.) 从选择命令来自下拉列表中选择

(2.) 点击刚刚插入的宏名称;

(3.) 然后点击添加按钮,将宏添加到自定义快速访问工具栏中。

doc reply all with attachment 3

7. 然后点击确定关闭对话框,现在,宏按钮已插入到 快速访问工具栏中,见截图:

doc reply all with attachment 4

8. 现在,点击宏按钮,带有原始附件的回复消息窗口就会打开,然后撰写回复消息,并点击发送按钮,见截图:

doc reply all with attachment 5

使用Kutools for Outlook带原始附件回复所有

如果您安装了Kutools for Outlook,通过其带附件回复所有功能,只需单击即可完成带附件回复所有。

使用Kutools for Outlook解锁无与伦比的邮件处理效率!永久免费获取 70 项强大功能。立即下载免费版本

安装Kutools for Outlook后,请按以下步骤操作:

1. 选择要带附件回复所有的邮件,然后点击Kutools > 带原始附件回复所有,见截图:

doc reply all with attch kto 1

2. 带有原始附件的回复消息窗口打开后,撰写您的消息并发送,见截图:

doc reply all with attachment 7

立即点击下载Kutools for Outlook免费版本