每天早上我都会收到一封来自服务器的自动生成的电子邮件,其中包含一个电子表格附件。我在 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 任务计划程序实用程序。虽然您将不是能够重命名附件本身,有可能的创建一个以您能想到的任何日期时间模式命名的文件夹,用于存放附件。唯一的缺点是:您必须为此付费。