Solved

Find/Return All Files in a directory tree - VB6

Posted on 2009-07-15
3
314 Views
Last Modified: 2012-06-22
I would likw a very simple piece of code that (given a starting folder) will loop and return into an array every directory/filename combination (format ready for Open statement) in a directory and all its subdirectories. No special order is required. Thanks.
0
Comment
Question by:centech-group
  • 2
3 Comments
 
LVL 8

Expert Comment

by:Bob Hoffman
ID: 24864105
Try this
 
 

Option Explicit
 

Dim mlngIndex As Long

Dim gstrFiles() As String
 

Private Sub Command1_Click()

    Call ListFiles("c:\temp")

End Sub
 

Private Sub ListFiles(strFolder As String)

    Dim oFs As Object

    Dim oFile As File

    Dim oFolder As Folder

    Dim oSubFolder As Folder

   

    Set oFs = CreateObject("Scripting.FileSystemObject")

    Set oFolder = oFs.GetFolder(strFolder)

    If Err.Number > 0 Then Exit Sub

   

    For Each oFile In oFolder.Files

        mlngIndex = mlngIndex + 1

        ReDim Preserve gstrFiles(mlngIndex)

        gstrFiles(mlngIndex - 1) = oFolder.Path & "\" & oFile.Name

    Next

    

    For Each oSubFolder In oFolder.SubFolders

        Call ListFiles(oSubFolder.Path)

    Next

  

    'Clean up

    Set oFs = Nothing

    Set oFolder = Nothing
 

End Sub

Open in new window

0
 
LVL 85

Accepted Solution

by:
Mike Tomlinson earned 500 total points
ID: 24864590
ReDim Preserve will slow it down significantly if you have a large number of files...

...you could use a Collection instead like in my old example here:
http://www.experts-exchange.com/Programming/Languages/Visual_Basic/Q_21205213.html
0
 
LVL 8

Expert Comment

by:Bob Hoffman
ID: 24895764
Idle_Mind is correct about the ReDim slowing things down. But your question did say "loop and return into an array every directory/filename combination". Probably should have given you what you needed not what you asked for.
0

Featured Post

Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Introduction While answering a recent question about filtering a custom class collection, I realized that this could be accomplished with very little code by using the ScriptControl (SC) library.  This article will introduce you to the SC library a…
I was working on a PowerPoint add-in the other day and a client asked me "can you implement a feature which processes a chart when it's pasted into a slide from another deck?". It got me wondering how to hook into built-in ribbon events in Office.
Get people started with the process of using Access VBA to control Excel using automation, Microsoft Access can control other applications. An example is the ability to programmatically talk to Excel. Using automation, an Access application can laun…
Get people started with the utilization of class modules. Class modules can be a powerful tool in Microsoft Access. They allow you to create self-contained objects that encapsulate functionality. They can easily hide the complexity of a process from…

867 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

21 Experts available now in Live!

Get 1:1 Help Now