+ Reply to Thread
Results 1 to 2 of 2

Find filename, path, document size, filename length and path length?

Hybrid View

  1. #1
    Registered User
    Join Date
    04-30-2010
    Location
    Kent, England
    MS-Off Ver
    Excel 2003
    Posts
    1

    Find filename, path, document size, filename length and path length?

    I am trying to create a macro in excel to give me a listing of all the files in a folder (including subfolders).

    The information I would need from it would be:
    Filename (including extension)
    Path (including filename and extension)
    File Size
    Length of filename (and extension)
    Length of path (including filename and extension).

    Ideally I would browse for the root folder, or maybe paste the path following a prompt?

    Can anyone help me out?

    Thanks,
    Laneyboggs

  2. #2
    Forum Moderator Leith Ross's Avatar
    Join Date
    01-15-2005
    Location
    San Francisco, Ca
    MS-Off Ver
    2000, 2003, & 2010
    Posts
    23,259

    re: Find filename, path, document size, filename length and path length?

    Hello Laneyboggs,

    This macro lets you choose your starting folder and whether you want to list all the sub-folders. You can also choose the starting cell on the worksheet. If you don't supply a starting cell, the default is "A2" of the active worksheet. This macro works with Excel 2000 and later.
    'Written: April 30, 2010
    'Author:  Leith Ross
    
    Sub ListAllFiles(ByVal SourceFolderName As String, Optional IncludeSubfolders As Boolean, Optional WksCell As Range)
    
      Dim FSO As Object
      Dim SourceFolder As Object
      Dim SubFolder As Object
      Dim FileItem As Object
      
         Set FSO = CreateObject("Scripting.FileSystemObject")
         Set SourceFolder = FSO.GetFolder(SourceFolderName)
         
         If WksCell Is Nothing Then
           'Default starting cell is A2 on the ActiveSheet
            Set WksCell = Range("A2")
         End If
         
          'List files in the Folder one column to the right
           For Each FileItem In SourceFolder.Files
             WksCell.Offset(0, 0) = FileItem.Name
             WksCell.Offset(0, 1) = FileItem.Path
             WksCell.Offset(0, 2) = FileItem.Size
             WksCell.Offset(0, 3) = Len(FileItem.Name)
             WksCell.Offset(0, 4) = Len(FileItem.Path)
            'List the Files in the Folder starting 1 row down
             Set WksCell = WksCell.Offset(1, 0)
           Next FileItem
           
          'List Subfolders if option is True
           If IncludeSubfolders Then
             For Each SubFolder In SourceFolder.SubFolders
               ListAllFiles SubFolder.Path, True, WksCell
             Next SubFolder
           End If
        
       'Release objects and free memory
        Set SourceFolder = Nothing
        Set SubFolder = Nothing
        Set FileItem = Nothing
        Set FSO = Nothing
        
    End Sub

    Example of Calling the Macro from VBA
      'List only the files in the folders
        ListAllFiles "C:\Documents and Settings\Owner\Start Menu"
      'Or this way
        ListAllFiles "C:\Documents and Settings\Owner\Start Menu", False
    
      'List all files in the folder and all files in all sub-folders
        ListAllFiles "C:\Documents and Settings\Owner\Start Menu", True
    Sincerely,
    Leith Ross

    Remember To Do the Following....

    1. Use code tags. Place [CODE] before the first line of code and [/CODE] after the last line of code.
    2. Thank those who have helped you by clicking the Star below the post.
    3. Please mark your post [SOLVED] if it has been answered satisfactorily.


    Old Scottish Proverb...
    Luathaid gu deanamh maille! (Rushing causes delays!)

+ Reply to Thread

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts

Search Engine Friendly URLs by vBSEO 3.6.0 RC 1