Vba Outlook宏间歇性权限错误
我对VBA一无所知,我设法拼凑了一个非常简单的宏,它允许我通过规则保存为电子邮件:Vba Outlook宏间歇性权限错误,vba,email,outlook,Vba,Email,Outlook,我对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
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,我可以将任何电子邮件保存到宏中定义的文件夹中
我怀疑主题行中的特殊字符引起了问题,但我还没有做足够的尝试和错误来真正得出结论(主题行中有一个冒号(:)
让我知道你的想法
我怀疑主题行中的特殊字符引起了问题,但我还没有做足够的尝试和错误来真正得出结论(主题行中有一个冒号(:)
您是对的-冒号将导致问题
如果尝试使用Windows资源管理器编辑包含冒号的文件名,您将收到以下消息:
文件名不能包含以下任何字符:\/:*?“<>|
最好是将主题中的任何此类字符转换为其他字符,例如,而不是
strname = myMail.Subject
你可以用
strname = Replace(myMail.Subject, ":", "_")
将任何冒号改为下划线
或者你可以全力以赴
strname = Replace( _
Replace( _
Replace( _
Replace( _
Replace( _
Replace( _
Replace( _
Replace( _
Replace(myMail.Subject, "\", "_"), _
"/", "_"), _
":", "_"), _
"*", "_"), _
"?", "_"), _
"""", "_"), _
"<", "_"), _
">", "_"), _
"|", "_")
strname=替换(_
取代(_
取代(_
取代(_
取代(_
取代(_
取代(_
取代(_
替换(myMail.Subject,“\”,“\”_
"/", "_"), _
":", "_"), _
"*", "_"), _
"?", "_"), _
"""", "_"), _
"", "_"), _
"|", "_")
如果你想。显然,替换字符的选择取决于你——如果你只是想去掉字符,你甚至可以用“
替换它们