Outlook附件自动存储

思路&方案
Outlook规则功能检测是否有附件 + vba获取邮件中的附件并存储

  • 1、开启数字证书(更安全!

  • 路径:C:\Program Files (x86)\Microsoft Office\root\Office16
    在这里插入图片描述

  • 输入自己的字符串,点击确定即可,最好记录下来。
    在这里插入图片描述

  • 2、到注册表开启,规则中的运行脚本功能。

  • 路径:计算机\HKEY_CURRENT_USER\SOFTWARE\Microsoft\Office\16.0\Outlook\Security

  • 创建一个DWORD(32位)值,命名为EnableUnsafeClientMailRules并设置值为1 。

  • 在这里插入图片描述

  • 3、回到Outlook开启宏相关的设置

  • 调出开发工具在这里插入图片描述

  • 开启脚本能在邮件文件夹中运行在这里插入图片描述

  • 4、编写VBA脚本

  • 在这里插入图片描述

Sub SaveAttachment(ByVal Item As Object, path$, Optional condition$ = "*")
    Dim olAtt As Attachment
    Dim i As Integer
    Set regEx = CreateObject("VBSCRIPT.REGEXP")
    
    With regEx
        .Global = True
        .Pattern = "[\\:&\/\*\?""\<\>\|]|[^A-Za-z0-9\u4e00-\u9fa5]"
        
        If Item.Attachments.Count > 0 Then
        
            Pfloder = path & .Replace(Item.Subject, "_") & "\"
            If Dir(Pfloder, vbDirectory) = "" Then MkDir Pfloder '若无文件夹则新建该文件夹
            
            For Each att In Item.Attachments

                If att.FileName Like condition Then
                    att.SaveAsFile Pfloder & att.FileName
                End If
                
            Next
        End If
    End With
    Set olAtt = Nothing
End Sub

Sub 保存(Item As Outlook.MailItem)
'Debug.Print "有邮件"
'MsgBox "有邮件"
SaveAttachment Item, "C:\Mails\"
End Sub

  • 添加一下第一步设置的数字签名
    在这里插入图片描述

  • 5、设置规则即可~
    在这里插入图片描述

  • 4
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
### 回答1: 可以使用Outlook VBA编写代码来实现自动保存附件的功能。具体实现步骤如下: 1. 打开Outlook并进入VBA编辑器界面。 2. 在VBA编辑器中,选择“这台电脑上的项目”并新建一个模块。 3. 在模块中编写代码,实现自动保存附件的功能。例如,以下代码可以将所有收件箱中的邮件附件保存到指定的文件夹中: Sub SaveAttachments() Dim objOL As Outlook.Application Dim objMsg As Outlook.MailItem 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 ' Loop through each item in the collection. For Each objMsg In objSelection Set objAttachments = objMsg.Attachments lngCount = objAttachments.Count If lngCount > Then ' We need to 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 4. 保存代码并关闭VBA编辑器。 5. 在Outlook中,打开收件箱并选择要自动保存附件的邮件。 6. 运行刚才编写的VBA代码,即可自动将邮件附件保存到指定的文件夹中。 ### 回答2: 在Outlook使用VBA自动保存附件,需要先开启Outlook的宏功能以及启用安全性设置,防止过多的垃圾邮件对电脑造成不必要的损害。 首先,打开Outlook的VBA编辑器,选择“工具——引用”,勾选“Microsoft Outlook yy.0 Object Library”和“Microsoft Visual Basic for Applications Extensibility xx.0”两个选项,然后编写自动保存附件的代码。以下是一些示例代码,可能需要根据自己的需求进行修改。 1.自动保存指定文件夹中的附件。 ``` Sub AutoSaveAttachments() Dim oNS As Outlook.NameSpace Dim oFolder As Outlook.MAPIFolder Dim oMessage As Outlook.MailItem Dim oAttachment As Outlook.Attachment Dim sSaveFolder As String Set oNS = Application.GetNamespace("MAPI") '设定保存的文件夹路径,需事先创建好 sSaveFolder = "C:\Attachments\" Set oFolder = oNS.GetDefaultFolder(olFolderInbox) For Each oMessage In oFolder.Items For Each oAttachment In oMessage.Attachments oAttachment.SaveAsFile sSaveFolder & oAttachment.FileName Next Next Set oAttachment = Nothing Set oMessage = Nothing Set oFolder = Nothing Set oNS = Nothing End Sub ``` 2.自动保存指定邮件中的附件。 ``` Sub AutoSaveAttachments() Dim oNS As Outlook.NameSpace Dim oMessage As Outlook.MailItem Dim oAttachment As Outlook.Attachment Dim sSaveFolder As String Set oNS = Application.GetNamespace("MAPI") '设定保存的文件夹路径,需事先创建好 sSaveFolder = "C:\Attachments\" '设定需要保存附件的邮件主题 Set oMessage = oNS.GetDefaultFolder(olFolderInbox).Items.Find("[Subject]='主题名称'") For Each oAttachment In oMessage.Attachments oAttachment.SaveAsFile sSaveFolder & oAttachment.FileName Next Set oAttachment = Nothing Set oMessage = Nothing Set oNS = Nothing End Sub ``` 3.自动保存指定发件人发送的邮件中的附件。 ``` Sub AutoSaveAttachments() Dim oNS As Outlook.NameSpace Dim oFolder As Outlook.MAPIFolder Dim oMessage As Outlook.MailItem Dim oAttachment As Outlook.Attachment Dim oRecipient As Outlook.Recipient Dim sSaveFolder As String Set oNS = Application.GetNamespace("MAPI") '设定保存的文件夹路径,需事先创建好 sSaveFolder = "C:\Attachments\" Set oFolder = oNS.GetDefaultFolder(olFolderInbox) '设定需要保存附件的发件人名称 For Each oMessage In oFolder.Items.Restrict("[SenderName] = '发件人名称'") For Each oAttachment In oMessage.Attachments oAttachment.SaveAsFile sSaveFolder & oAttachment.FileName Next Next Set oAttachment = Nothing Set oMessage = Nothing Set oFolder = Nothing Set oNS = Nothing End Sub ``` 以上是一些常见的自动保存附件的VBA代码,可根据实际情况进行修改和自定义。需要注意的是,自动保存附件可能会占据过多的磁盘空间,对电脑性能产生影响,应在必要时定期清理保存的附件。 ### 回答3: Outlook是微软公司的邮件管理软件,而VBA(Visual Basic for Applications)是一种基于Microsoft Visual Basic的编程语言。在Outlook VBA中,可以编写代码来自动执行一些任务,如自动保存附件。 首先,需要在Outlook中打开Visual Basic编辑器。选择“Tools”菜单下的“Macro”选项,再选择“Visual Basic Editor”。 然后,在VBA编辑器中,选择“Insert”菜单下的“Module”选项,输入下面的代码: Sub SaveAttachments() Dim objOL As Outlook.Application Dim objMsg As Outlook.MailItem Dim objAttachments As Outlook.Attachments Dim i As Long Dim lngCount As Long Dim strFile As String Dim strFolderpath As String ' 插入附件存储路径 strFolderpath = "C:\Attachments\" ' 创建Outlook应用程序对象 Set objOL = CreateObject("Outlook.Application") ' 循环浏览每封邮件 For Each objMsg In objOL.ActiveExplorer.Selection Set objAttachments = objMsg.Attachments lngCount = objAttachments.Count If lngCount > 0 Then ' 循环浏览每个附件 For i = 1 To lngCount ' 获取附件名称 strFile = strFolderpath & objAttachments.Item(i).FileName ' 存储附件 objAttachments.Item(i).SaveAsFile strFile Next i End If Next ExitSub: Set objAttachments = Nothing Set objMsg = Nothing Set objOL = Nothing End Sub 以上代码解释: 首先,定义一些变量,包括Outlook应用程序对象、邮件对象、附件对象、附件数量、附件文件名和附件存储路径。 然后,处理每个选定的邮件,获取其附件并保存。如果邮件没有附件,则跳过这个循环。 最后,清除每个对象的引用。 以上是使用Outlook VBA自动保存附件的基本步骤和代码示例。可以根据具体的需求来修改代码,如更改附件存储路径、筛选特定类型的附件等。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值