如何通过VBA设置Outlook模板邮件发送后的存储文件夹?
解决方案:用VBA指定Outlook邮件发送后的存储文件夹
可以直接通过VBA设置邮件对象的SaveSentMessageFolder属性,程序化指定手动发送后的邮件存储位置——不管是从已有的.oft模板创建邮件,还是生成带预设存储路径的.oft模板都能实现。
1. 从现有.oft模板创建邮件时指定存储路径
从已有的.oft模板生成邮件并保存到草稿箱时,只需在代码中为邮件对象绑定目标存储文件夹:
Sub CreateMailFromTemplateWithSentFolder() Dim olApp As Outlook.Application Dim olMail As Outlook.MailItem Dim targetFolder As Outlook.Folder Set olApp = Outlook.Application ' 加载指定路径的.oft模板 Set olMail = olApp.CreateItemFromTemplate("C:\你的模板路径\Template.oft") ' 获取目标存储文件夹(示例:收件箱下的"自定义已发送"文件夹) Set targetFolder = olApp.Session.GetDefaultFolder(olFolderInbox).Folders("自定义已发送") ' 核心设置:指定发送后邮件保存的文件夹 Set olMail.SaveSentMessageFolder = targetFolder ' 将邮件保存至草稿箱 olMail.Save ' 打开邮件窗口供手动编辑发送(可选) olMail.Display ' 释放资源 Set olMail = Nothing Set targetFolder = Nothing Set olApp = Nothing End Sub
2. 创建带预设存储路径的.oft模板
如果希望生成的.oft模板本身就自带发送后存储路径的设置,可以先创建空白邮件并配置属性,再另存为.oft文件:
Sub CreateTemplateWithSentFolder() Dim olApp As Outlook.Application Dim olMail As Outlook.MailItem Dim targetFolder As Outlook.Folder Set olApp = Outlook.Application Set olMail = olApp.CreateItem(olMailItem) ' 设置模板的基础内容(主题、正文等) olMail.Subject = "预设主题" olMail.Body = "这是模板的正文内容" ' 指定发送后要存储的文件夹 Set targetFolder = olApp.Session.GetDefaultFolder(olFolderInbox).Folders("自定义已发送") Set olMail.SaveSentMessageFolder = targetFolder ' 将邮件另存为.oft模板文件 olMail.SaveAs "C:\你的模板保存路径\CustomTemplate.oft", olTemplate ' 关闭并丢弃临时邮件 olMail.Close olDiscard ' 释放资源 Set olMail = Nothing Set targetFolder = Nothing Set olApp = Nothing End Sub
注意事项
- 确保目标存储文件夹已存在,若需要可在代码中添加判断逻辑,不存在则自动创建。
- 如果是共享邮箱的文件夹,需使用
GetSharedDefaultFolder方法获取目标文件夹对象。 - 代码设置的
SaveSentMessageFolder会优先于Outlook的全局设置,手动发送时邮件会自动保存到指定路径。
内容的提问来源于stack exchange,提问作者AxD
相关产品推荐
相关产品推荐

