我正在尝试创建一个程序,自动下载从特定电子邮件发送给我们的附加文件,然后用SAS转换附加到我们的csv的分隔符,并通过我已经创建的流传递这些csv。
我已经成功地创建了一个程序,可以按照我想要的方式处理csv和分隔符,问题是,当涉及到从Outlook自动下载文件时,它不起作用。
我所做的是用我在互联网上找到的以下VB代码创建一个规则:
Public Sub SaveAttachmentsToDisk(MItem As Outlook.MailItem)
Dim oAttachment As Outlook.Attachment
Dim sSaveFolder As String
sSaveFolder = "C:UsersES010246Desktop"
For Each oAttachment In MItem.Attachments
oAttachment.SaveAsFile sSaveFolder & oAttachment.DisplayName
Next
End Sub
我已经将路径更改为我想要下载文件的个人路径。
网站:https://es.extendoffice.com/documents/outlook/3747-outlook
问题是,这个代码对我不起作用,它对我毫无作用,无论我在互联网上搜索多少,都只有这个代码出现。
我想用SAS做什么,还有其他办法吗?什么是自动下载Outlook发送给我的8个csv文件,或者有人在VBA中遇到过和我一样的事情?
我已经完成了大约7次所有的步骤,所以我认为错误不是复制代码或选择了错误的某些选项,事实上我已经复制并粘贴了代码,后来我修改了我想要保存这些代码的路径。文件,但它不起作用,有人知道为什么吗?
我将不胜感激,非常感谢你所做的一切!
首先,您需要确保文件名和路径不包含禁止的符号。
Outlook中用于规则的VBA宏是绝对有效的,但邮件项目可能包含具有相同名称的附加文件,因此保存到磁盘的文件可能会被覆盖(使用相同名称保存(。这就是为什么我建议用您自己的唯一ID生成一个文件名,确保DisplayName
属性不为空,并且具有可用于文件名的有效名称(排除禁用符号(。
此外,您还可以考虑处理Application
类的NewMailEx
事件,该事件在新邮件到达收件箱时以及客户端规则处理发生之前触发。使用EntryIDCollection
字符串中返回的条目ID调用NameSpace.GetItemFromID方法并处理该项。此事件为Microsoft Outlook处理的每个收到的项目触发一次。项目可以是几种不同项目类型中的一种,例如MailItem
、MeetingItem
或SharingItem
。
当项目被移动到文件夹(从收件箱(时,Items.ItemAdd
事件会很有帮助。当同时向文件夹中添加大量项目时,不会运行此事件。