办公问答网

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 70|回复: 0

Outlook VBA如何自动保存附件

[复制链接]

4

主题

6

帖子

13

积分

新手上路

Rank: 1

积分
13
发表于 2022-11-27 19:50:00 | 显示全部楼层 |阅读模式
基础VBA代码

Option Explicit

Public Sub AutosaveAttachtoDisk(itm As Outlook.MailItem)
Dim objAtt As Outlook.Attachment
Dim saveFolder As String
'You can change your directory path here.
saveFolder = "C:\Users\haha\Documents\Outlook VBA test folder"
For Each objAtt In itm.Attachments
    'you can modify the file name by changing the objAtt.DisplayName part.
    objAtt.SaveAsFile saveFolder & "\" & objAtt.DisplayName
Set objAtt = Nothing
Next

End Sub这是将收到邮件的所有附件全部存入指定文件夹的指令。也可以自行添加一些筛选。
第六行为保存附件的文件夹路径,请自行更改。
注意事项

写在最前面,若不能满足业务需求,可以直接退出该文章了。。。

  • 该方法为outlook的vba宏,意味着需要你保持网络连接正常并且outlook开着的时候才会自动将附件存储到指定位置。(当然你电脑扣上不关机是没啥问题的。如果关掉outlook再打开,outlook也会开始对新邮件进行该操作。)
  • 需要注意,该宏遇到同名附件时,将直接覆盖文件,保留最后一次的文件。(当然你也可以修改附件的路径使每一次的文件路径或者名称都不一样来避免这个问题。)
配置方法

在vba中复制上方代码,在vba中新建module并保存。在文件->rules and alerts中设置规则,每当收到一个文件,运行一次该宏即可。

<hr/>以下为详细说明,偏傻瓜向,比较啰嗦,可自行挑选阅读。

设置信任所有宏

点击File -> Options -> Trust Center -> Trust Center Settings -> Macro Settings,然后勾选Enable all macros (not recommended; potentially dangerous code can run) 即可。
若因工作环境登特殊原因无法勾选该选项,而只能被动勾选 Notifications for digitally signed macros, all other macros disabled,也有方法,只不过需要配置一个digital certificate。
如果只能选择disable all macros的话,那你可以退出这篇文章了。
配置digital certificate方法

无法信任所有宏时,就需要配置一个digital certificate使宏能够被配置为被信任的状态。
具体方法时要找到一个名为SELFCERT的应用程序,如果是office2016,则文件夹路径应该是 C:\Program Files\Microsoft Office\root\Office16。如果找不到的话,在合适的范围内暴力搜索也是一种方法。
双击该程序并输入一段字符串作为你的certificate的名称即可。
outlook vba调取和写入宏

快捷键Alt+F11直接调取outlook vba 或在工具栏中选择Developer点击Visual Basic.
若工具栏中默认没有Developer这个选项,则:
点击File -> Options -> Customize Ribbon,在右栏上方选择All Tabs并勾选Developer即可。

调取出VBA界面后在左侧project explorer界面右键insert插入一个module,并将本文开头的代码复制粘贴过去并保存。
如果之前的信任选项选择的digital signed macros 而不是 Enable all macros,则还需要用刚才申请的certificate给宏签个名。
选中你要签名的宏后,在工具栏中点击 Tools -> Digital Signature,弹出窗口点击choose选择一个certificate签名再点击OK就可以了。
为指定邮箱设置规则

点击 File -> Manage Rules & Alerts,在最上方选择一个邮箱的收件箱,点击New Rule新建邮件规则。
选择 Start from a blank rule的Apply rule on messages I receive,点击next之后,可以设置一些筛选项,选择性操作,如果想对每一封收到的邮件进行该操作则直接再次点击next跳过,系统提示点yes即可。
勾选 run a script运行脚本,在下方区域点击a script 脚本,选择我们的宏 (若复制粘贴上面的代码应该是saveAttachtoDisk),确认后点击next
最后也是一个筛选选项可略过点击完成。
如果找不到run a script选项,需要如下操作:
快捷键Win+R调取运行指令框,输入regedit并确认(此过程可能需要管理员权限。)
在弹出窗口后找到此路径:HKEY_CURRENT_USER\Software\Microsoft\Office\16.0\Outlook\Security
右键左边的Security文件夹,New -> DWORD (32-bit) Value 并设置名称为EnableUnsafeClientMailRules
双击该值并设置其Value data为1,Base为Hexadecimal。
重启outlook就可以找到了。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|办公问答网

GMT+8, 2025-3-16 15:12 , Processed in 0.101060 second(s), 23 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc. Templated By 【未来科技 www.veikei.com】设计

快速回复 返回顶部 返回列表