我创建了一个宏来备份选择的邮件。
我将宏附加到功能区上。这适用于一封邮件,但是当我在同一Outlook会话中选择另一封邮件时,出现以下错误:
执行期间发生错误-2147286788(800300fc):操作失败。
这是我的代码:
Public Sub OpslaanMails()
Dim oMail As Outlook.MailItem
Dim objItem As Object
Dim sPath As String
Dim dtDate As Date
Dim sName, sTime As String
sPath = "A:\Backup\"
For Each objItem In ActiveExplorer.Selection
If objItem.MessageClass = "IPM.Note" Then
Set oMail = objItem
sName = oMail.SenderName
sTime = oMail.ReceivedTime
dtDate = oMail.ReceivedTime
sName = sName & " " & Format(dtDate, "dd-mm-yyyy", vbUseSystemDayOfWeek, _
vbUseSystem) & " " & Format(dtDate, "hh-nn-ss", _
vbUseSystemDayOfWeek, vbUseSystem)
tName = Replace(sName, ":", ";")
oMail.SaveAs sPath & tName & ".msg", olMsg
End If
Next
End Sub
当我使用sName = oMail.Subject
时,我可以选择任意数量的邮件,并且可以使用,但不能与oMail.SenderName
一起使用。
当我点击Debug时,它失败了:oMail.SaveAs sPath & tName & ".msg", olMsg
。
我评论了tName = Replace(sName, ":", ";")
并更改
oMail.SaveAs sPath & tName & ".msg", olMsg
到
Mail.SaveAs sPath & sName & ".msg", olMsg
但这不起作用。
我尝试声明oMail as Object
,但这并没有任何改变。添加多个替换来处理不允许的字符也是行不通的。
答案 0 :(得分:0)
错误为STG_E_INVALIDNAME
,表示您传递给SaveAs
的文件名无效。
答案 1 :(得分:0)
我想我解决了。我将function scramble(str1, str2) {
str1 = [...str1];
return [...str2].filter((str => (str == str1.splice(str1.indexOf(str), 1)))).join('') == str2;
}
更改为sName = oMail.SenderName
,并删除了每个Replace函数。瞧,现在可以了!