How do you get just the filename rather than the entire file path of an open file?

前端 未结 5 1430
遥遥无期
遥遥无期 2020-12-06 23:07

In other words, would I need to do some string processing after invoking the Application.GetOpenFileName() Method?

5条回答
  •  感情败类
    2020-12-06 23:27

    Why reinvent the wheel and write tons of boilerplate code? Just use the existing FileSystemObject's GetFileName method, already written and tested and debugged for you:

    filename = FSO.GetFileName(path)
    

    Here's a working example:

    Dim path As String
    Dim filename As String
    Dim FSO As Scripting.FileSystemObject
    Set FSO = New FileSystemObject
    
    path = "C:\mydir\myotherdir\myfile.txt"
    
    filename = FSO.GetFileName(path) 'Bingo. Done.
    
    Debug.Print filename ' returns "myfile.txt"
    
    ' Other features:
    Debug.Print FSO.GetBaseName(path) ' myfile
    Debug.Print FSO.GetExtensionName(path) ' txt
    Debug.Print FSO.GetParentFolderName(path) ' C:\mydir\myotherdir
    Debug.Print FSO.GetDriveName(path) ' C:
    ' et cetera, et cetera.
    

    You will need to set a reference as follows: Tools > References... > set checkmark next to Microsoft Scripting Runtime.

    Otherwise use late binding:

    Dim FSO As Object
    Set FSO = CreateObject("Scripting.FileSystemObject")
    

提交回复
热议问题