• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 191
  • Last Modified:

Get file name

Good Afternoon!
I have lot of files in a folder which I need to transfer their names to a TXT or Excel file. How do I do it without coping their names manually (one by one)?
I appreciate your help.

best regards,
  • 4
  • 2
1 Solution
Look at the Dir Function in VB help
Somethis like this is what I had in mind

Private Sub Form_Load()
    MsgBox ListFiles("C:\")
End Sub

Public Function ListFiles(ByVal strPath As String) As String
    Dim strWork As String
    Dim strReturn As String
    If Right(strPath, 1) <> "\" Then strPath = strPath & "\"
    strWork = Dir(strPath, vbNormal + vbDirectory)
    Do While strWork <> ""   ' Start the loop.
        ' Ignore the current directory and the encompassing directory.
        If strWork <> "." And strWork <> ".." Then
            ' Use bitwise comparison to make sure MyName is a directory.
            If (GetAttr(strPath & strWork) And vbDirectory) = vbDirectory Then
                strReturn = strReturn & "[" & strWork & "]" & vbCrLf
                strReturn = strReturn & strWork & vbCrLf
            End If
        End If
        strWork = Dir   ' Get next entry.
    ListFiles = strReturn
End Function
You could save the returned string to a file or work with it as you need.
Upgrade your Question Security!

Your question, your audience. Choose who sees your identity—and your question—with question security.

If this is a one shot, you could also just use a DOS command like this to get a listing into a text file

dir /b > c:\list.txt

(This works on Win2000, if you have problems with the /b on your system, remove it.)
If you just need a text file, you can use this command at a DOS prompt:


The the DIRCONTENTS.TXT file will contain your list. The /B parameter means 'bare' so it dumps the file names and nothing else.

For doing it in VB, look into the FileSystemObject. It allows you to open a folder and then loop through its contents:

    Dim FSO As New FileSystemObject
    Dim MyFolder As Folder
    Dim MyFile As File
    Set MyFolder = FSO.GetFolder("C:\Folder Name")
    For Each MyFile In MyFolder.Files
        'Now you have access to all kinds of information about the
        'files in the folder including the file name
        Debug.Print MyFile.Name

Here's a link with all the info about the FileSystemObject:


Hope it helps!
I forgot to mention, you'll need to add a reference to "Microsoft Scripting Runtime" to use the FileSystemObject.
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

Join & Write a Comment

Featured Post

Free Tool: Subnet Calculator

The subnet calculator helps you design networks by taking an IP address and network mask and returning information such as network, broadcast address, and host range.

One of a set of tools we're offering as a way of saying thank you for being a part of the community.

  • 4
  • 2
Tackle projects and never again get stuck behind a technical roadblock.
Join Now