在Outlook中一次保存许多电子邮件中的附件吗?


18

有人隔夜给我发送了200封电子邮件,每个附件一个。

我预计接下来的三个晚上每晚还会有200个(电子邮件来自服务器,因此无法要求它们进行批处理)。

文件附件具有唯一的文件名,那么是否有一种直接的方法可以一次保存整个电子邮件组中的附件?

我讨厌必须分别打开每封电子邮件,右键单击,保存,冲洗,重复...

我精通VBA,非常舒适地创建Excel宏,因此可以想象遍历给定文件夹中的所有邮件并保存每个附件的附件相对容易,但是我之前没有写过Outlook宏,不熟悉对象层次结构。

Answers:


14

NirSoft的OutlookAttachView甚至可以从命令行轻松完成此操作!

OutlookAttachView扫描Outlook中存储的所有邮件,并显示找到的所有附件的列表。您可以轻松地选择一个或多个附件并将它们全部保存到所需的文件夹中,还可以删除不需要的大型附件,这些附件占用了邮箱中过多的磁盘空间。您也可以将附件列表保存到xml / html / text / csv文件中。

替代文字

OutlookAttachView是免费软件。


感谢使用此实用程序。帮助了我今天早上想做的事:随时在我的收件箱中下载99个pdf附件。
Chaitanya MSV


3

这里有一些其他选择。

Sue Mosher的网站http://slipstick.com是Outlook的绝佳资源。她也是微软MVP。

对于您的编码人员:将附件保存到硬盘驱动器,或者 使用VBA保存并打开附件

以下代码可在Outlook 2000及更高版本中使用。它会保存所选邮件中的附件,但不会从邮件中删除附件。

复制此页中的代码并将其粘贴到ThisOutlookSession项目中。

在Outlook中,按Alt + F11打开VBA编辑器,然后展开Microsoft Outlook Objects,然后双击ThisOutlookSession在编辑窗格中将其打开,然后按Ctrl + V粘贴代码。

要使用它,您必须首先在“我的文档”下创建一个名为OLAttachments的文件夹(代码不会为您创建该文件夹)。然后选择一个或多个消息并运行宏以保存附件。您需要在启用宏或对宏进行签名之前将宏安全性设置为警告。您可以通过编辑代码来更改文件夹名称或保存附件的路径。

Public Sub SaveAttachments()
Dim objOL As Outlook.Application
Dim objMsg As Outlook.MailItem 'Object
Dim objAttachments As Outlook.Attachments
Dim objSelection As Outlook.Selection
Dim i As Long
Dim lngCount As Long
Dim strFile As String
Dim strFolderpath As String
Dim strDeletedFiles As String

    ' Get the path to your My Documents folder
    strFolderpath = CreateObject("WScript.Shell").SpecialFolders(16)
    On Error Resume Next

    ' Instantiate an Outlook Application object.
    Set objOL = CreateObject("Outlook.Application")

    ' Get the collection of selected objects.
    Set objSelection = objOL.ActiveExplorer.Selection

' The attachment folder needs to exist
' You can change this to another folder name of your choice

    ' Set the Attachment folder.
    strFolderpath = strFolderpath & "\OLAttachments\"

    ' Check each selected item for attachments. 
    For Each objMsg In objSelection

    Set objAttachments = objMsg.Attachments
    lngCount = objAttachments.Count

    If lngCount > 0 Then

    ' Use a count down loop for removing items
    ' from a collection. Otherwise, the loop counter gets
    ' confused and only every other item is removed.

    For i = lngCount To 1 Step -1

    ' Get the file name.
    strFile = objAttachments.Item(i).FileName

    ' Combine with the path to the Temp folder.
    strFile = strFolderpath & strFile

    ' Save the attachment as a file.
    objAttachments.Item(i).SaveAsFile strFile

    Next i
    End If

    Next

ExitSub:

Set objAttachments = Nothing
Set objMsg = Nothing
Set objSelection = Nothing
Set objOL = Nothing
End Sub

如果您不想编程:Outlook的附件管理工具


就我而言,我所有的电子邮件都具有相同的主题行,因此每个文件都覆盖了前一个文件,只剩下一个文件。快速和肮脏的修复我所做的就是要在前面加上一个索引号,以便每个文件保证唯一的,是这样的:当前的声明如下补充:Dim Index As Long和下一行Index = 1 变化:strFile = strFolderpath & strFilestrFile = strFolderpath & Index & "_" & strFile 和“下一个我”前添加:Index = Index + 1
斯塔克斯

0

我是从谁认为这是很好的给我分RAR文件30个电子邮件的人的电子邮件轰炸后,我已经成功地使用Microsoft发布此VBA脚本mAttachmentSaver

首先,您必须下载包含脚本的档案

启用宏非常重要。在Outlook 2010中,您可以通过以下步骤执行此操作:转到文件»选项»信任中心»信任中心设置»宏设置»启用所有宏»确定»确定。然后,您需要重新启动Outlook。对于早期版本,它位于“ 工具”»“宏”»“安全性”下

然后,按照TechCenter文章中概述的步骤进行操作:

  • 按下Alt+F11以在Outlook中打开VBE。

  • mAttachmentSaver.bas文件拖到项目资源管理器(Ctrl+R如果看不到,请按),或通过文件>>导入文件...Ctrl+M)。

    运行ExecuteSaving宏以保存附件。

  • 返回到Outlook UI,然后按Alt+F8打开宏窗口。

  • ExecuteSaving在名称列表中选择,然后单击“ 运行”按钮(请记住在运行此宏之前选择Outlook项目)。

  • 从“ 浏览文件夹”对话框中选择一个特定的文件夹以保存附件,然后单击“ 确定”按钮。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.