我对VBA一无所知,我设法组建了一个非常简单的宏,允许我通过规则保存电子邮件:
Sub sTXT(myMail As Outlook.MailItem)
strname = myMail.Subject
myMail.SaveAs "C:\Users\ss127w\Box Sync\maildump\" & strname & ".txt", OLTXT
End Sub
Sub Test()
Call sTXT(ActiveExplorer.Selection(1))
End Sub
这已经很好地工作了很多个月,我一直在出口相同的两种类型的电子邮件,没有问题。好吧,今天我尝试为不同的电子邮件设置新规则,这个宏给了我一个权限错误:
Outlook cannot complete the save due to a file permission error.
我没有对宏做任何改变。我开始在随机的其他电子邮件上测试宏,并注意到它适用于某些而不是其他电子邮件。
现在,如果我要手动执行SaveAs,我可以将任何电子邮件保存到宏中定义的文件夹中。
我怀疑主题行中的特殊字符引起了问题,但我还没有做足够的试验和错误才能真正得出结论(主题行中有冒号(:))。
让我知道你的想法。
答案 0 :(得分:1)
我怀疑主题行中的特殊字符引起了问题,但我还没有做足够的试验和错误才能真正得出结论(主题行中有冒号(:))。
你是对的 - 冒号会引起问题。
如果您尝试使用Windows资源管理器编辑文件名以包含冒号,您将收到以下消息:
文件名不能包含以下任何字符:\ /:*? " < > |
最好的办法是将主题中的任何此类字符转换为其他字符,例如而不是
strname = myMail.Subject
你可以使用
strname = Replace(myMail.Subject, ":", "_")
将任何冒号改为下划线。
或者你可以选择完整的
strname = Replace( _
Replace( _
Replace( _
Replace( _
Replace( _
Replace( _
Replace( _
Replace( _
Replace(myMail.Subject, "\", "_"), _
"/", "_"), _
":", "_"), _
"*", "_"), _
"?", "_"), _
"""", "_"), _
"<", "_"), _
">", "_"), _
"|", "_")
如果你愿意的话。显然,替换角色的选择取决于你 - 如果你只想摆脱角色,你甚至可以用""
替换它们。