List file names with links in excel

半世苍凉 提交于 2019-12-08 09:50:58

问题


Is there a way to list file names across different directories in an excel sheet, with links (so one can click on the link beside the file name and the file would open)?

  • I'm ready to write a script, but I don't know of any particular method or command.
  • I don't want to be typing the whole thing.
  • I don't care about directory/tree structure, but file link should be present.
  • There is one directory which contains lots of other folders which contain the files I need to list, mostly *.pdf's.

Any help appreciated. Thanks!


回答1:


You can use below code to get File name and File path Set main folder to strFolderPath

'Global Declaration for Start Row

Public lngRow As Long

Sub pReadAllFilesInDirectory()

    Dim strFolderPath               As String
    Dim BlnInclude_subfolder        As Boolean

    'Set Path here
    strFolderPath = "C:\"

    'set start row
    lngRow = 1

    'Set this true if you want list of sub-folders as well
    BlnInclude_subfolder = True

    '---------- Reading of files in folders and sub-folders------
    Call ListMyFiles(strFolderPath, BlnInclude_subfolder)
    '---------- Reading of files in folders and sub-folders------

End Sub

Sub ListMyFiles(mySourcePath As String, blnIncludeSubfolders As Boolean)

    Dim MyObject            As Object
    Dim mySource            As Object
    Dim mySubFolder         As Object
    Dim myfile              As Object
    Dim iCol                As Long

    Set MyObject = CreateObject("Scripting.FileSystemObject")
    Set mySource = MyObject.GetFolder(mySourcePath)

    'Loop in each file in Folder
    For Each myfile In mySource.Files

        iCol = 1
        Sheet1.Cells(lngRow, iCol).Value = myfile.Name  'File Name
        iCol = iCol + 1
        Sheet1.Cells(lngRow, iCol).Value = myfile.Path  'File Path/Location
        lngRow = lngRow + 1

    Next

    If blnIncludeSubfolders Then
        For Each mySubFolder In mySource.SubFolders
            Call ListMyFiles(mySubFolder.Path, True)
        Next
    End If

End Sub



回答2:


A quick seach yielded this answer I believe you are looking for.

Sub Example1()
Dim objFSO As Object 
Dim objFolder As Object 
Dim objFile As Object 
Dim i As Integer 

'Create an instance of the FileSystemObject 
Set objFSO = CreateObject("Scripting.FileSystemObject")
'Get the folder object 
Set objFolder = objFSO.GetFolder("D:\Stuff\Business\Temp")
i = 1
'loops through each file in the directory 
For Each objFile In objFolder.Files
    'select cell 
    Range(Cells(i + 1, 1), Cells(i + 1, 1)).Select 
    'create hyperlink in selected cell 
    ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:= _ 
        objFile.Path, _ 
        TextToDisplay:=objFile.Name 
    i = i + 1 
Next objFile
End Sub 


来源:https://stackoverflow.com/questions/26342665/list-file-names-with-links-in-excel

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!