Outlook Express で分割送信されたメッセージを結合するマクロ ver 2


以前、Outlook Express で分割送信されたメッセージを結合するマクロを紹介したのですが、このマクロを作成した当時は Outlook で EML ファイルを開くことができなかったため、最終的に EML ファイルを Outlook Express などで開くという手順になっていました。

しかし、Outlook 2010 では標準で、Outlook 2003 および 2007 ではそれぞれ KB967346 あるいはKB956693 を適用することで、EML ファイルを開くことができるようになりましたので、結合したメッセージを Outlook で開くようマクロを修正しました。

分割されたメッセージを CTRL+左クリックで選択した後、下記のマクロを実行すると結合されたメッセージが開かれます。


' ここをトリプルクリックでマクロ全体を選択できます。
Public Sub MergeMessages2()
    Dim myOlExp As Outlook.Explorer
    Dim myOlSel As Outlook.Selection
    Dim strFileName As String
    Dim strTempFile As String
    Dim myFSO As Object
    Dim myFile As Object
    Dim myTempFile As Object
    Dim iMax As Integer
    Dim iCur As Integer
    Dim i As Integer
    Dim strSubject As String
    Dim strMergeSubject As String
    Dim l As Integer 
    Set myOlExp = Application.ActiveExplorer
    Set myOlSel = myOlExp.Selection
    If myOlSel.Count = 0 Then
        Exit Sub
    End If
    Set myFSO = CreateObject("Scripting.FileSystemObject")
    strFileName = Environ("TEMP") & "\結合されたメッセージ.eml"
    strTempFile = Environ("TEMP") & "\~tmp.dat"
    Set myFile = myFSO.CreateTextFile(strFileName, True)
    strSubject = myOlSel.Item(1).Subject
    If Right(strSubject, 1) = "]" Then
        l = InStrRev(strSubject, "/")
        If l > 0 Then
            iMax = CInt(Mid(strSubject, l + 1, Len(strSubject) - l - 1))
        End If
        strSubject = Left(strSubject, InStrRev(strSubject, "[") - 1)
    End If
'
    For iCur = 1 To iMax
        For i = 1 To myOlSel.Count
            If myOlSel.Count > 9 Then
                strMergeSubject = strSubject & "[" & Right("0" & iCur, 2) & "/" & iMax & "]"
            Else
                strMergeSubject = strSubject & "[" & iCur & "/" & iMax & "]"
            End If
            With myOlSel.Item(i)
                If .Subject = strMergeSubject Then
                    If .Body = "" Then
                        .Attachments(1).SaveAsFile strTempFile
                        Set myTempFile = myFSO.OpenTextFile(strTempFile, 1)
                        myFile.Write myTempFile.ReadAll
                        myTempFile.Close
                        myFSO.DeleteFile strTempFile
                    Else
                        myFile.Write .Body
                    End If
                    Exit For
                End If
            End With
        Next
        If i > myOlSel.Count Then iMax = 0
    Next
    myFile.Close
    If iMax = 0 Then
        MsgBox "結合するメッセージが不足しているか、メッセージの指定に誤りがあります。下記のメッセージが見つかりません。" & vbCrLf & strMergeSubject, vbCritical, "メッセージの結合"
    Else
        Shell "Outlook.exe /eml """ & strFileName & """" 
    End If 
    Set myFSO = Nothing
End Sub


マクロの登録方法やメニューへの追加について

Outlook Express で分割送信されたメッセージを結合するマクロ ver 2」への8件のフィードバック

  1. 結合マクロ、とても便利ですね。
    ただ最近、18分割など分割数が多い巨大メールを受信してマクロを使用すると
    「結合するメッセージが不足しているか、メッセージの指定に誤りがあります。」と表示され
    必ず結合が失敗します。その場合の対処として手作業でテキストを結合し、
    .eml保存すると問題なく開くことができます。
    何が原因かわかりません。

  2. いつも勉強させていただいています。
    結合マクロを試用してみたところ,「コマンドラインの引数が正しくありません。使用しているスイッチを確認してください」というエラーが出て結合できません。何が原因なのでしょうか?

  3. レスありがとうございます!バージョンは2003および2007を使用しています。修正プログラムとはどこで入手できるのでしょうか?

  4. はじめまして、Windows7でoutlook2003を使用しています。WindowsXPでは修正プログラムとマクロで正常に結合できましたが、Windows7では修正プログラムがインストール出来ませんでした。別の修正プログラムが必要でしょうか?

  5. 便利なマクロの提供、ありがとうございます。ほとんどの場合、問題なく使用できていますが、稀に “添付ファイルのサイズが最大値を超えています。” というメッセージが出て結合できない事があります。この場合の対処方法がありましたら教えて下さい。

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中