Excel (VBA)

Excel VBAに関するフォーラムです。
  • 掲示板への投稿には会員登録(無料)が必要です。会員登録がまだの方はこちら
  • 掲示板ご利用上のお願い」に反するご記入はご遠慮ください。
  • Q&A掲示板の使い方はこちらをご覧ください
トピックに返信
質問

 
(Windows 8 : Excel 2010)
OutlookからExcelへの書き出し
投稿日時: 20/03/08 17:26:22
投稿者: エズラビ

Outlookの受信メールをExcelへ一覧表形式で書き出したいです。
下記で動き、改良したいと考えていますが、手詰まりしています。
 
@件数が多いため処理に時間がかかってしまいます。
InputBoxで受信期間を指定して、指定した期間のもののみ抽出することはできるのでしょうか?
 
A複数アドレスがあり、
それぞれに「受信トレイ」がぶらさがっているのですが、
書き出しをするアドレス(3つあるうちの1つ)を指定することは可能でしょうか・・・?
 
( 自分なりに調べ、
 If acc ="abc@outlook.jp" then
      Set f = acc.DeliveryStore.GetDefaultFolder(6)
でやってみたのですが、動きませんでした・・・・)
 
 
 
 
Sub Outlook_mail_list()
     
    Dim InboxFolder, i, n, k, attno As Long
    Dim sender, path1 As String
    Dim outlookObj As Outlook.Application
    Dim myNameSpace, objmailItem As Object
    Dim fso As FileSystemObject
 
    Set outlookObj = CreateObject("Outlook.Application")
    Set myNameSpace = outlookObj.GetNamespace("MAPI")
    Set InboxFolder = myNameSpace.GetDefaultFolder(6)
    n = 2
 
    MsgBox InboxFolder.Items.Count
    For i = 1 To InboxFolder.Items.Count
        Set objmailItem = InboxFolder.Items(i)
 
        Range("A" & n).Value = i
        Range("B" & n).Value = objmailItem.ReceivedTime
        Range("C" & n).Value = objmailItem.Subject
        Range("D" & n).Value = objmailItem.SenderName
        Range("E" & n).Value = objmailItem.SenderEmailAddress
        Range("F" & n).Value = Left(objmailItem.Body, 100)
 
        n = n + 1
    Next
 
    Set outlookObj = Nothing
    Set myNameSpace = Nothing
    Set InboxFolder = Nothing
 
End Sub

回答
投稿日時: 20/03/08 18:52:01
投稿者: takesi

確認して下さい。

Sub Outlook_mail_list()
     
    Dim InboxFolder, i, n, k, attno As Long
    Dim sender, path1 As String
    Dim outlookObj As Outlook.Application
    Dim myNameSpace, objmailItem As Object
    
    Set outlookObj = CreateObject("Outlook.Application")
    Set myNameSpace = outlookObj.GetNamespace("MAPI")
    
    Dim objAct As Object
    For Each objAct In myNameSpace.Folders
        Set InboxFolder = objAct.Folders(1) '受信トレイ
        '2:送信トレイ 3:予定表 4:連絡先 11:迷惑メール
        MsgBox objAct.Name & vbCrLf & "未読アイテム数:" & InboxFolder.UnReadItemCount, vbInformation '+ vbSystemModal
    Next

 
    Set outlookObj = Nothing
    Set myNameSpace = Nothing
    Set InboxFolder = Nothing
 
End Sub

トピックに返信