• ベストアンサー

EXCELの配列で

メールの本文を1行づつよみとってEXCELへ書き出そうと思っています。 Sub getMail1() Dim myOl As New Outlook.Application Dim dFolder As MAPIFolder Dim myItem As MailItem Dim delItem As MailItem Dim myRecipient As Recipient Dim i As Long, j As Long Const mAddress = 0, mTel = 1, mName = 2, mAge = 3 Set dFolder = myOl.GetNamespace _ ("MAPI").Folders("個人用フォルダ").Folders("単発") i = 1 On Error Resume Next For Each myItem In dFolder.Items i = i + 1 Set delItem = myItem.Reply For Each myRecipient In delItem.Recipients If InStr(1, myRecipient.Address, "@", vbBinaryCompare) _ <> 0 Then Exit For End If Next delItem.Delete With ActiveSheet myBody = Split(myItem.Body, vbCrLf) .Cells(i, 1).Value = myRecipient.Address .Cells(i, 2) = myItem.SenderName .Cells(i, 3) = myItem.Subject .Cells(i, 4) = myItem.ReceivedTime For j = 0 To UBound(myBody) i = i + 1 On Error Resume Next .Cells(i, 1) = myBody(j) .Cells(i, 1).MergeCells = True Next End With i = i + 1 Next Set myOl = Nothing End Sub このようなコードを書いて書き出すことは出来たのですが配列が縦になってしまいます。 横に配列したいのですが教えてください。 伊藤太郎 東京都 03-3123-4567を 伊藤太郎 東京都 03-3123-4567 としたいです。 よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

For j = 0 To UBound(myBody) i = i + 1 On Error Resume Next .Cells(i, 1) = myBody(j) .Cells(i, 1).MergeCells = True Next を i=i+1 For j = 0 To UBound(myBody) On Error Resume Next .Cells(i, j+1) = myBody(j) .Cells(i, j+1).MergeCells = True Next にしたらどうでしょうか

aki08102001
質問者

お礼

ありがこうございます。 思い通りのものが出来ました。 感謝です!!

その他の回答 (1)

回答No.1

ここまで出来ているのなら、答えなくてももしかしたらもうわかってしまっているかもしれませんが 「 .Cells(i, 1).Value = myRecipient.Address .Cells(i, 2) = myItem.SenderName .Cells(i, 3) = myItem.Subject .Cells(i, 4) = myItem.ReceivedTime 」 この部分の Cells(RowIndex,ColumnIndex) RowIndexはExcelの行を指定します ColumnIndexはExcelの列を指定します となるので 「 .Cells(1, i).Value = myRecipient.Address .Cells(2, i) = myItem.SenderName .Cells(3, i) = myItem.Subject .Cells(4, i) = myItem.ReceivedTime 」 このようにすれば横に書き出すことが出来ると思います

aki08102001
質問者

補足

その通りにしたら1行しか書き込まれませんでした。

関連するQ&A