Microsoft KB Archive/306248

From BetaArchive Wiki
Knowledge Base


WD2002: Sample Macro to List All Files in a Folder

Article ID: 306248

Article Last Modified on 10/11/2006



APPLIES TO

  • Microsoft Word 2002 Standard Edition



This article was previously published under Q306248

For a Microsoft Word 2000 version of this article, see 236162.


SUMMARY

This article contains a sample Microsoft Visual Basic for Applications macro that you can use to create a list of all files in a specified folder. The macro returns the following information to a new Word document:

  • The folder name for the listed files
  • The file names of the files found
  • The file sizes of the files found
  • The dates and times of the files found
  • The total number of files listed

The macro creates a list of files similar to the following example:

   File Listing of the C:\MY DOCUMENTS folder!

   File Name                       File Size       File Date/Time
   ----------------------------------------------------------------------

   Background.doc                  1461            2/24/99 2:16:52 PM
   Backup of Background.wbk        1461            2/24/99 2:14:10 PM
   Book1.xls                       15360           6/15/99 3:07:42 PM
   Book2.xls                       13824           11/12/98 4:28:50 PM
   Book3.xls                       13824           11/24/98 9:38:32 AM

   Total files in folder = 5 files.
                

MORE INFORMATION

Microsoft provides programming examples for illustration only, without warranty either expressed or implied. This includes, but is not limited to, the implied warranties of merchantability or fitness for a particular purpose. This article assumes that you are familiar with the programming language that is being demonstrated and with the tools that are used to create and to debug procedures. Microsoft support engineers can help explain the functionality of a particular procedure, but they will not modify these examples to provide added functionality or construct procedures to meet your specific requirements. The following sample macro lists or prints the file name, the file size, and the date and time of all files found in the specified folder:

Sub FolderList()
'
' Example Macro to list the files contained in a folder.
'

   Dim x As String, MyName As String
   Dim i As Integer
   Dim Response As Integer, TotalFiles As Integer

   On Error Resume Next

Folder:

   ' Prompt the user for the folder to list.
   x = InputBox(Prompt:="What folder do you want to list?" & vbCr & vbCr _
         & "For example: C:\My Documents", _
         Default:=Options.DefaultFilePath(wdDocumentsPath))

   If x = "" Or x = " " Then
      If MsgBox("Either you did not type a folder name correctly" _
            & vbCr & "or you clicked Cancel. Do you want to quit?" _
            & vbCr & vbCr & _
            "If you want to type a folder name, click No." & vbCr & _
            "If you want to quit, click Yes.", vbYesNo) = vbYes Then
         Exit Sub
      Else
         GoTo Folder
      End If
   End If

   ' Test if folder exists.
   If Dir(x, vbDirectory) = "" Then
      MsgBox "The folder does not exist. Please try again."
      GoTo Folder
   End If

   ' Search the specified folder for files
   ' and type the listing in the document.
   With Application.FileSearch
      .NewSearch
      .FileType = msoFileTypeOfficeFiles
      ' Change the .FileType to the type of files you are looking for;
      ' for example, the following line finds all files:
      ' .FileType = msoFileTypeAllFiles
      .LookIn = x
      .Execute
      TotalFiles = .FoundFiles.Count
      If TotalFiles = 0 Then
         MsgBox ("There are no files in the folder!" & _
               "Please type another folder to list.")
         GoTo Folder
      End If

      ' Create a new document for the file listing.
      Application.Documents.Add
      ActiveDocument.ActiveWindow.View = wdPrintView

      ' Set tabs.
      With Selection.ParagraphFormat.TabStops
         .Add _
               Position:=InchesToPoints(3), _
               Alignment:=wdAlignTabLeft, _
               Leader:=wdTabLeaderSpaces
         .Add _
               Position:=InchesToPoints(4), _
               Alignment:=wdAlignTabLeft, _
               Leader:=wdTabLeaderSpaces
      End With

      ' Type the file list headings.
      Selection.TypeText "File Listing of the "

      With Selection.Font
         .AllCaps = True
         .Bold = True
      End With
      Selection.TypeText x
      With Selection.Font
         .AllCaps = False
         .Bold = False
      End With
      Selection.TypeText " folder!" & vbLf
      Selection.Font.Underline = wdUnderlineSingle
      Selection.TypeText vbLf & "File Name" & vbTab & "File Size" _
            & vbTab & "File Date/Time" & vbLf & vbLf
      Selection.Font.Underline = wdUnderlineNone
      For i = 1 To TotalFiles
         MyName = .FoundFiles(i)
         Selection.TypeText MyName & vbTab & FileLen(MyName) _
               & vbTab & FileDateTime(MyName) & vbLf
      Next i

      ' Type the total number of files found.
      Selection.TypeText vbLf & "Total files in folder = " & TotalFiles & _
            " files."
   End With

   If MsgBox("Do you want to print this folder list?", vbYesNo)=vbYes Then
      Application.ActiveDocument.PrintOut
   End If

   If MsgBox("Do you want to list another folder?", vbYesNo)=vbYes Then
      GoTo Folder
   End If

End Sub
                

REFERENCES

For more information about how to use the sample code in this article, click the article number below to view the article in the Microsoft Knowledge Base:

290140 OFFXP: How to Run Sample Code from Knowledge Base Articles


For additional information about getting help with Visual Basic forApplications, click the article number below to view the article in the Microsoft Knowledge Base:

305326 OFFXP: Programming Resources for Visual Basic for Applications



Additional query words: vba inf VBE

Keywords: kbhowto kbmacroexample kbprogramming KB306248