none
メールの本文を1行出力でエクスポートしたいです RRS feed

  • 質問

  • Outlook2016を使用しています。

    メールの内容をCSVではきだすと本文が改行され整理ができません。

    宛先名:日付:本文を1セルずつ3列1行にするにはどうしたら良いでしょうか?

    Outlookのマクロをサイトを参考にしようとしましたが「コンパイルエラー、EndSubが必要です」と出力されてしまいます。

    コンパイルエラーと出力されております、どなたかご教示頂けませんでしょうか?

    Sub TEST()
     Private Sub Application_NewMailEx(ByVal EntryIDCollection As String)
         Const XX = "XX"
         Const N = 5
         Const CSV_FILE = "c:\temp\report.csv"
         Dim objItem As Object
         Dim arrLine As Variant
         Dim strLine As String
         Dim i As Integer
         '
         Set objItem = Session.GetItemFromID(EntryIDCollection)
         If objItem.MessageClass = "IPM.Note" Then
             ' CSV ファイルを追記モードで開く
             Open CSV_FILE For Append As #1
             ' 本文を改行コードで行に分割
             arrLine = Split(objItem.Body, vbCrLf)
             For i = LBound(arrLine) To UBound(arrLine)
                 strLine = arrLine(i)
                 ' 行が指定のキーワードで終わるか確認
                 If strLine Like "*" & XX Then
                     ' 行が指定のキーワードより前に文字列を含むかチェック
                     If Len(strLine) > Len(XX) Then
                         ' 行末の指定のキーワードを削除
                          strLine = Left(strLine, Len(strLine) - Len(XX))
                         ' 残りが N 以上か確認
                         If Len(strLine) >= N Then
                             ' N 文字だけ抜き出す
                              strLine = Mid(strLine, Len(strLine) - N + 1)
                         End If
                     End If
                 End If
                 If Len(strLine) > 0 Then
                     ' 取得した行を CSV ファイルに書き出す
                     Print #1, strLine
                 End If
             Next
             Close #1
         End If
    End Sub

    お手数ですがご教示頂けますと幸いです。

    2019年5月27日 2:43

すべての返信

  • clownaskさん、こんにちは、何かのコードのコピーから編集しているのでしょうか

    >コンパイルエラー、EndSubが必要です< は、Sub TEST()が end sub で閉じられていません。
    多分、Sub TEST()内には、Private Sub Application_NewMailEx(ByVal EntryIDCollection As String)を
    呼び出すコードが書かれていると想像できますが。

    >メールの内容をCSVではきだすと本文が改行され整理ができません。
    こう言う事かな? 新たに変数total_strを宣言して  Dim total_str as string

                 If Len(strLine) > 0 Then
                     ' 取得した行を CSV ファイルに書き出す
                     Print #1, strLine  ’ここに total_str=total_str & strLine 
                 End If
             Next
      Print #1, total_str  ’まとめた文字列を書き出し 
             Close #1
         End If

    宛先名:日付:本文を1セルずつ3列1行にするにはどうしたら良いでしょうか?

    CSV書き込みのコードなのでセル出力は、また別かな
    Outlookから抽出するのであれば、
            受信日時 = objItem.ReceivedTime
            件名(タイトル) = objItem.Subject
            送信者名 = objItem.SenderName

    等を使って抽出、出力すればよいかと

    最後に、気になるのですがこのコードは、function、サブルーチン的ことなのでしょうが、
    その場合、Append As #1 の 1 は、指定になるので FreeFile などで宣言した方が良いかと
    また、Set は nothingで解放した方が良いかと思います。


    • 編集済み Takumi_Q 2019年6月2日 10:05 表現、誤字を訂正
    2019年6月2日 8:39