2016-05-12 16 views
1

次のコードが動作します指定されたメールから指定ファイルを開きます。しかし、それはどのような提案をExcelの別の行に本文のメッセージを分離することはありませんか? Outlookの本文がExcelにコピーされません


Const xlUp As Long = -4162 

Sub ExportToExcel(MyMail As MailItem) 
    Dim strID As String, olNS As Outlook.NameSpace 
    Dim olMail As Outlook.MailItem 
    Dim strFileName As String 

'~~> Excel Variables 
Dim oXLApp As Object, oXLwb As Object, oXLws As Object 
Dim lRow As Long 

strID = MyMail.EntryID 
Set olNS = Application.GetNamespace("MAPI") 
Set olMail = olNS.GetItemFromID(strID) 

'~~> Establish an EXCEL application object 
On Error Resume Next 
Set oXLApp = GetObject(, "Excel.Application") 

'~~> If not found then create new instance 
If Err.Number <> 0 Then 
    Set oXLApp = CreateObject("Excel.Application") 
End If 
Err.Clear 
On Error GoTo 0 

'~~> Show Excel 
oXLApp.Visible = True 

'~~> Open the relevant file 
Set oXLwb = oXLApp.Workbooks.Open("C:\Users\ltorres\Documents\multiplier.xlsx") 

'~~> Set the relevant output sheet. Change as applicable 
Set oXLws = oXLwb.Sheets("Sheet1") 

lRow = oXLws.Range("A" & oXLws.Rows.Count).End(xlUp).Row + 1 

'~~> Write to outlook 
With oXLws 
Dim MyAr() As String 

MyAr = Split(olMail.Body, vbCrLf) 

For i = LBound(MyAr) To UBound(MyAr) 
    '~~> This will give you the contents of your email 
    '~~> on separate lines 
    Debug.Print MyAr(i) 
Next i 
    End With 

'~~> Close and Clean up Excel 
oXLwb.Close (True) 
oXLApp.Quit 
Set oXLws = Nothing 
Set oXLwb = Nothing 
Set oXLApp = Nothing 

Set olMail = Nothing 
Set olNS = Nothing 

For i = LBound(MyAr) To UBound(MyAr) 
    '~~> This will give you the contents of your email 
    '~~> on separate lines 
    Debug.Print MyAr(i) 
Next i 
    End With 
End Subの

+0

万一 'lRow = oXLws.Range( "A" &oXLApp.Rows.Count).END(xlUp).Row + 1 'B eは 'oXLApps'ではなく' oXLws'の行を参照していますか?また、 'Debug.Print MyAr(i)'から直接ウィンドウに表示されるものは何ですか? – Jordan

+0

@jordan正解私はそれを修正しましたが、表示される内容は件名と送信者の列AとBですが、本文はデバッグしていますが、電子メールの本文を示しています。 ***私は別の行に電子メールの本文を分離したいと思いますのでご注意ください – Luis

答えて

3

あなたはWith文でlRowを設定することができますが、あなたはまた、1行あなたのによって定義されるように改行があるたびに追加する必要があり、してみてください:

With oXLws 
lRow = .Range("A" & .Rows.Count).End(xlUp).Row + 1 
Dim MyAr() As String 
MyAr = Split(olMail.Body, vbCrLf) 
For i = LBound(MyAr) To UBound(MyAr) 
    .Range("A" & lRow).Value = MyAr(i) 
    lRow = lRow + 1 
Next i 
End With 
+1

これは私が一緒に行きたい方向に私を取得する必要がありがとう – Luis

関連する問題