2013-10-10 2 views
2

Доброе утро всем,Сохранить почты с темой, как имя файла

Я надеюсь кто-то может помочь мне здесь с куском кода.

Я ищу, чтобы сохранить выбранное электронное письмо в определенном каталоге, с именем электронной почты и, конечно, как файл .msg. Это то, что у меня есть сегодня, и оно не работает. Он сохраняет файл, но имя имеет только первые 2 символа (похоже, это ошибки после имени файла в виде двоеточия, например: FW или RE) ... содержимое файла пуст, и тип файла не был применен.

'code to save selected email 
Dim selectedEmail As MailItem 
Set selectedEmail = ActiveExplorer.Selection.Item(1) 
Dim emailsub As String 
emailsub = ActiveExplorer.Selection.Item(1).Subject 
    With selectedEmail 
     .SaveAs "C:\direcotry\folder\" & emailsub & ".msg", olMSG 
    End With 

Благодарим вас в ожидании. Дом

ответ

2

Причина очень проста. Вы указываете тему сообщения и недействительный символ. Например : Это обычно происходит, когда электронная почта является RE: или FWD:

Попробуйте

Sub Sample() 
    Dim selectedEmail As MailItem 
    Dim emailsub As String 

    Set selectedEmail = ActiveExplorer.Selection.Item(1) 

    emailsub = GetValidName(selectedEmail.subject) 

    'Debug.Print emailsub 

    With selectedEmail 
     .SaveAs "C:\direcotry\folder\" & emailsub & ".msg", OlSaveAsType.olMSG 
    End With 
End Sub 

Function GetValidName(sSub As String) As String 
    '~~> File Name cannot have these \/: * ? " < > | 
    Dim sTemp As String 

    sTemp = sSub 

    sTemp = Replace(sTemp, "\", "") 
    sTemp = Replace(sTemp, "/", "") 
    sTemp = Replace(sTemp, ":", "") 
    sTemp = Replace(sTemp, "*", "") 
    sTemp = Replace(sTemp, """", "") 
    sTemp = Replace(sTemp, "<", "") 
    sTemp = Replace(sTemp, ">", "") 
    sTemp = Replace(sTemp, "|", "") 

    GetValidName = sTemp 
End Function 
Смежные вопросы