Excel/Macro

Advertisement


Question
I need to create  a macro that will list the file name, Subject, To and Sent date & Time in an excel sheet from a folder that contains .msg (Outlook) files. Please note, this is not directly from Outlook but saved outlook mails. Also, I want to keet an option to extract the same information from sub-folder (True/False).
I have tried to something. But its not working.

Dim iRow




Sub ListFiles()

   iRow = 11

   Call ListMyFiles(Range("C7"), Range("C8"))

End Sub




Sub ListMyFiles(mySourcePath, IncludeSubfolders)

   Dim MyOutlook As Outlook.Application

   Dim msg As Outlook.MailItem

   Dim x As Namespace

   

   Set MyOutlook = New Outlook.Application

   Set x = MyOutlook.GetNamespace("MAPI")

   FileList = ListFile(Path + "*.msg")




   On Error Resume Next

   For Each myFile In mySource.Files

   

   Set msg = x.OpenSharedItems(Path + ListFiles9Row)

       iCol = 2

       Cells(iRow, iCol).Value = myFile.Path

       iCol = iCol + 1

       Cells(iRow, iCol).Value = msg.Subject

       iCol = iCol + 1

       Cells(iRow, iCol).Value = msg.To

       iCol = iCol + 1

       Cells(iRow, iCol).Value = msg.SentOn

       iRow = iRow + 1

   Next

   If IncludeSubfolders Then

       For Each mySubFolder In mySource.SubFolders

         Call ListMyFiles(mySubFolder.Path, True)

       Next

   End If

End Sub


Kindly help me.

Answer
Hello Idrani,

I apologize for my late response. For some reason I haven't been receiving the normal text notifications I get when a new question is posted.  

I believe this solution does what you want.  It uses the same basic method that you used with just a few minor modifications.
__________________________________________________

Dim iRow    As Long
Dim MyOutlook  As Object
Dim msg        As Outlook.MailItem
Dim NS         As Namespace
Dim fs         As Object


Sub ListFiles()

  Set MyOutlook = New Outlook.Application
  Set NS = MyOutlook.GetNamespace("MAPI")
  
  Set fs = CreateObject("Scripting.FileSystemObject")
  iRow = 11

  Call ListMyFiles(Range("C7"), Range("C8"))

End Sub

Sub ListMyFiles(mySourcePath As String, IncludeSubfolders As Boolean)

  Dim myFile     As String
  Dim f          As Object
  Dim File       As Object
  
  Set f = fs.GetFolder(mySourcePath)

  On Error Resume Next

  For Each File In f.Files
  
     If File.Name Like "*.msg" Then

        Set msg = NS.OpenSharedItem(mySourcePath & File.Name)
  
         Cells(iRow, 2).Value = mySourcePath
         Cells(iRow, 3).Value = msg.Subject
         Cells(iRow, 4).Value = msg.To
         Cells(iRow, 5).Value = msg.SentOn
  
         iRow = iRow + 1
         
     End If

  Next File

  If IncludeSubfolders Then
  
     Dim mySubFolder      As Object

      For Each mySubFolder In f.subfolders

        Call ListMyFiles(mySubFolder.Path, True)

      Next

  End If

End Sub

Let me know if any problems.

Damon  
About Excel
This topic answers questions related to Microsoft Excel spreadsheet (or workbook) stand-alone or Mircrosoft Office Excel including Excel 2003, Excel 2007, Office 2000, and Office XP. You can get Excel help on Excel formulas(or functions), Excell macros, charting in Excel, advanced features, and the general use of Excel. This does not provide a general Excel tutorial nor the basics of using a spreadsheet. It provides specific answers to using Microsoft Excel only. If you do not see your Excel question answered in this area then please ask an Excel question here

Excel

All Answers


Answers by Expert:


Ask Experts

Volunteer


Damon Ostrander

Expertise

I have extensive experience with VBA programming in Excel 5 through Excel 2013. As a former aerospace engineer with a large aerospace corporation and consultant in a small defense technology services company, I have developed a wide range of applications in VBA, including simulations involving mixed-language programming, satellite orbit mechanics, graphics and animation, and real-time applications. I am interested in moderate to hard VBA-related questions only.

Experience

I have developed and taught several courses in Excel VBA programming and also VBA programming in Office 97, 2000, and 2007. I have developed a number of large technical applications in Excel VBA for use within the aerospace industry.

Education/Credentials
B.S. in Electrical Engineering and Computer Science, University of California, Berkeley.

©2016 About.com. All rights reserved.