【问题标题】:Save mail with subject as filename将主题保存为文件名的邮件
【发布时间】:2013-10-10 09:20:47
【问题描述】:

大家早上好,

我希望有人可以在这里帮助我编写一段代码。

我希望将选定的电子邮件保存到一个特定的目录,带有电子邮件的名称,当然还有一个 .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

谢谢你的期待。 多姆

【问题讨论】:

    标签: vba outlook outlook-2010


    【解决方案1】:

    原因很简单。您的电子邮件主题包含无效字符。例如: 这通常发生在电子邮件为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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-08-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-07
      • 1970-01-01
      相关资源
      最近更新 更多