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

期待していただきありがとうございます。ドム

4

1 に答える 1

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
于 2013-10-10T09:54:12.363 に答える