自动将邮件附件保存到网络驱动器上

自动将邮件附件保存到网络驱动器上

每天早上我都会收到一封来自服务器的自动生成的电子邮件,其中包含一个电子表格附件。我在 Outlook 中制定了一条规则来捕获这些电子邮件。现在,我想创建一个宏,将附件 (.xls) 重命名为 =today() 并将其保存在网络驱动器上的文件夹中。此宏必须在每个工作日的 8:00 运行。我在 Excel 中编写了很多 VBA,但没有 Outlook 方面的经验。这可能吗?有人知道怎么做吗?

问候 Staal

答案1

为什么要将保存延迟到 8:00?

在“捕获这些电子邮件”规则中使用“运行脚本”保存。

Sub saveAttachtoDisk(itm As Outlook.MailItem)

Dim objAtt As Outlook.Attachment
Dim saveFolder As String

saveFolder = "D:\temp"  ' change to your path

For Each objAtt In itm.Attachments
    objAtt.SaveAsFile saveFolder & "\" & Format(Now, "yyyy-mm-dd") & ".xls"
Next

End Sub

根据评论进行编辑:

不确定您是否想在 saveAttachtoDisk 中执行此操作,但要在保存工作簿后对其进行操作,可以使用 Excel。

尝试 GetObject,如果出现错误则使用 CreateObject("Excel.Application") http://support.microsoft.com/kb/288902

然后像这样,或者任何适合你的方式,因为你了解 Excel VBA。

Workbooks.Open(文件名称)

工作表(1)。名称 =“工作表 1”


根据评论编辑2:

您必须传递一个参数。

打开一个邮件项目然后按 F8 键。

Sub saveAttachtoDisk_test
Dim currItem as mailitem
set curritem = activeinspector.currentitem
saveAttachtoDisk curritem
set currItem = nothing
end sub

答案2

我之所以评论这个问题是因为仅使用 Outlook VBA 没有足够的方法来实现所需的结果。您需要找到一些第三方解决方案。我个人可以推荐我公司的产品:ReliefJet Essentials for Outlook 专业版. 它提供了可用于调度的命令行保存附件使用 Windows 任务计划程序实用程序。虽然您将不是能够重命名附件本身,有可能的创建一个以您能想到的任何日期时间模式命名的文件夹,用于存放附件。唯一的缺点是:您必须为此付费。

相关内容