自动保存 Outlook 邮件的附件

作者: , 共 1170 字 , 共阅读 0
系列:办公自动化

查看该系列所有文章

在工作中定期或不定期会收到一些数据文件,然后要将它们的附件保存到自己的电脑上,下面演示如何让 Outlook 自动做这件事情。

首先,下面的 SaveAttach 函数可以保存附件中的 docx 文档到 D 盘根目录下。用 ALT+F11 打开 VBA 编辑器,插入下述代码:

Public Sub SaveAttach(Item As Outlook.MailItem)
    SaveAttachment Item, "D:\", "*.docx"
    ' MsgBox "附件已保存"
End Sub

' 保存附件
' path为保存路径,condition为附件名匹配条件
Private Sub SaveAttachment(ByVal Item As Object, path$, Optional condition$ = "*")
    Dim olAtt As Attachment
    Dim i As Integer

    If Item.Attachments.Count > 0 Then
        For i = 1 To Item.Attachments.Count
            Set olAtt = Item.Attachments(i)
            ' save the attachment
            If olAtt.FileName Like condition Then
                olAtt.SaveAsFile path & olAtt.FileName
            End If
        Next
    End If
    Set olAtt = Nothing
End Sub

如何实现自动保存呢?利用 Office Outlook 2007 的规则,它可以设定对满足一定条件的邮件自动运行脚本,然后选择脚本为 SaveAttach 函数即可。这样便能实现收到某些邮件时自动保存符合条件的附件到相应文件目录。

补充:如果上面方法没效果,可以尝试修改下面的设置(由 wfustc 在留言中指出)

在 Outlook 的信任中心勾选上「允许使用脚本」。

对于 Outlook 2007 ,在「工具->信任中心->电子邮件安全性->文件夹中的脚本",勾选上"允许在公用文件夹中使用脚本"和"允许在共享文件夹中使用脚本"

对于 Outlook 2010 ,相应选项位于「文件->选项->信任中心->电子邮件安全性"里。

Q. E. D.

系列: 办公自动化 »
时间管理中有重要的一条,保持你的收件箱整洁、干净。Gmail 一个重要的创新就是 Archive (存档),选中邮件后点下「archive」按钮或者按一下快捷键 y ,邮件就被移出收件箱,但又跟删除邮件不一样,这些邮件还可以继续被搜索。这里讲最近写的如何在 Outlook 里实现这个功能。
Excel 有一个很有用的功能是直接导入外部数据库或者使用外部数据源建立数据透视表和数据透视图。但比较可惜的是,这个数据源的查询语句是静态的,它无法根据日期自动修改(比如在应用中,我们希望每天获取的外部数据都是当天最新的数据),下面两个函数是修改外部数据源的 VBA 代码,调用它们就可以建立动态的数据源。
类似文章:
编程 » vbs, 办公自动化
工作中或多或少有些琐碎的事情,比如每天要发送和接受数据,很多是通过邮件的方式传递的。之前写过如何在 Outlook 里自动保存附件,这里再发一个如何更方便地发送带附件的邮件。
时间管理中有重要的一条,保持你的收件箱整洁、干净。Gmail 一个重要的创新就是 Archive (存档),选中邮件后点下「archive」按钮或者按一下快捷键 y ,邮件就被移出收件箱,但又跟删除邮件不一样,这些邮件还可以继续被搜索。这里讲最近写的如何在 Outlook 里实现这个功能。
以前发过一个编辑和发送 Outlook 邮件的 Excel/VBA 脚本。最近公司不让用 Outlook ,强制使用 IBM Lotus Notes ,我又写了一个编辑和发送 Lotus 邮件的 VBA 脚本。
编程 » Excel
在编辑 Excel 文件时经常遇到的一个问题是,我这边用得好好地,换台机器就变了个样,或者根本用不了。下面是我在日常工作中总结的一些避免这些情况的小技巧。
编程 » Excel, VBA
VBA 的 Date 类型比较奇怪。
编程 » Excel, lotus, VBA
公司使用 Lotus ,我每天都通过 Excel 编写 VBA 代码自动调用 Lotus 发送邮件,发现一个奇怪的现象。一般我们通过下面的 VBA 代码指定邮件收件人:
更新一下之前写的Excel 的数据库类,将其改成函数的形式,调用更简单(省却了生成类实例的步骤)。现在这个代码在工作中用了一年多,已经比较健壮。若有问题,请留言指出或与我联系。
2014-03-25 更新:我已经将该类修改成函数形式,并增加新功能,参见更新 Excel 的数据库查询函数库
编程 » Excel, VBA
无意中发现一个 Excel VBA 对待参数的一个"不正常"现象。这种处理方式可能无意中导致程序结果错误,而且你很难发现你的错误所在:
编程 » Excel, VBA
某些时候需要打开 Excel 文件来获取或者写入数据,但又不希望跳出打开的 Excel 文件窗口,可以用下面的代码:
编程 » Excel, VBA
效果图:
后一篇:
碎碎念 » 谣言
不知道最初来源于哪里,这个数字我最早是从李笑来那里看到的,我看完之后随便搜了几个数字,觉得结果也大同小异,心想为何笑来突然关注这个数字。后来才发现网上被传得到处都是,包括我的老同学也参与了,最后发现其根源是下面这条「新闻」