Note: The other languages of the website are Google-translated. Back to English

 如何列出文件夾中的所有文件名並在Excel中為其創建超鏈接?

在日常工作中,您可能需要將多個文件名從文件夾導入到工作表,並為每個文件創建超鏈接,以便快速,輕鬆地打開文件。 也許您可以手動複製和粘貼文件名並為其創建一個超鏈接,但是如果文件夾中有數百個文件,這將浪費大量時間。 今天,我將討論一些快速而有趣的方法來處理這項工作。

列出文件夾中的所有文件名,並使用VBA代碼創建超鏈接

列出文件夾中的所有文件名並使用Kutools for Excel創建超鏈接


要列出文件夾中的文件並創建超鏈接,請使用以下VBA代碼。

1。 激活一個新的工作表以放置結果。

2。 按住 ALT + F11 鍵打開 Microsoft Visual Basic for Applications 窗口。

3。 點擊 插入 > 模塊,然後將以下代碼粘貼到 模塊 窗口。

VBA:列出文件夾中的所有文件名並創建超鏈接

Sub Example1()
'Updateby Extendoffice
    Dim xFSO As Object 
    Dim xFolder As Object
    Dim xFile As Object
    Dim xFiDialog As FileDialog
    Dim xPath As String
    Dim I As Integer
    Set xFiDialog = Application.FileDialog(msoFileDialogFolderPicker)
    If xFiDialog.Show = -1 Then
        xPath = xFiDialog.SelectedItems(1)
    End If
    Set xFiDialog = Nothing
    If xPath = "" Then Exit Sub
    Set xFSO = CreateObject("Scripting.FileSystemObject")
    Set xFolder = xFSO.GetFolder(xPath)
    For Each xFile In xFolder.Files
        I = I + 1
        ActiveSheet.Hyperlinks.Add Cells(I, 1), xFile.Path, , , xFile.Name
    Next
End Sub

4。 然後按 F5 鍵以運行此代碼,然後從中選擇要列出文件的文件夾 瀏覽 窗口,請參見屏幕截圖:

文檔列表創建超鏈接1

5。 指定文件夾後,單擊 OK 按鈕,並且特定文件夾中的所有文件都已通過超鏈接列出到活動工作表中,請參見屏幕截圖:

文檔列表創建超鏈接2

備註:如果您的特定文件夾中有子文件夾,則不會列出子文件夾中的文件。


要列出一個文件夾及其子文件夾中的所有文件,並為每個文件創建超鏈接, Excel的Kutools文件名列表 可能幫你一個忙。 使用此功能,文件夾和子文件夾中的所有文件將立即列出,並具有一些屬性,例如文件名,文件大小,創建時間,包含文件夾等。

Excel的Kutools : 帶有300多個便捷的Excel加載項,可以在30天內免費試用.

如果你已經安裝 Excel的Kutools,請執行以下步驟:

1。 點擊 Kutools 加 > 進出口 > 文件名列表,請參見屏幕截圖:

2.文件名列表 對話框,請執行以下操作:

(1.)點擊 文檔列表創建超鏈接5 按鈕選擇要列出文件名的文件夾;

(2.)檢查 在子目錄中包含文件 如果要列出子文件夾中的文件名,請檢查 包括隱藏的文件和文件夾 如果要列出隱藏文件;

(3.)指定要查找的文件類型,並在 檔案類型 部分;

(4.)選擇要顯示的文件大小單位;

(5.)檢查 創建超鏈接 在對話框的左下方。

立即下載Kutools for Excel!

3。 然後點擊 Ok 按鈕,文件夾和子文件夾中的所有文件都已在新工作表中列出,並根據需要提供超鏈接,請參見屏幕截圖:

文檔列表創建超鏈接6

單擊以了解有關“文件名列表”實用程序的更多詳細信息……

立即下載和免費試用Excel的Kutools!


Excel的Kutools:具有300多個方便的Excel加載項,可以在30天內免費試用,沒有任何限制。 立即下載並免費試用!

相關文章:

如何將文件夾和子文件夾中的所有文件列出到工作表中?


最佳辦公效率工具

Kutools for Excel 解決了你的大部分問題,並將你的生產力提高了 80%

  • 重用: 快速插入 複雜的公式,圖表 以及您以前使用過的任何東西; 加密單元 帶密碼 創建郵件列表 並發送電子郵件...
  • 超級公式欄 (輕鬆編輯多行文本和公式); 閱讀版式 (輕鬆讀取和編輯大量單元格); 粘貼到過濾範圍...
  • 合併單元格/行/列 不會丟失數據; 拆分單元格內容; 合併重複的行/列...防止細胞重複; 比較範圍...
  • 選擇重複或唯一 行; 選擇空白行 (所有單元格都是空的); 超級查找和模糊查找 在許多工作簿中; 隨機選擇...
  • 確切的副本 多個單元格,無需更改公式參考; 自動創建參考 到多張紙; 插入項目符號,複選框等...
  • 提取文字,添加文本,按位置刪除, 刪除空間; 創建和打印分頁小計; 在單元格內容和註釋之間轉換...
  • 超級濾鏡 (將過濾方案保存並應用於其他工作表); 高級排序 按月/週/日,頻率及更多; 特殊過濾器 用粗體,斜體...
  • 結合工作簿和工作表; 根據關鍵列合併表; 將數據分割成多個工作表; 批量轉換xls,xlsx和PDF...
  • 超過 300 項強大的功能. 支持 Office / Excel 2007-2021 和 365。支持所有語言。 在您的企業或組織中輕鬆部署。 完整功能 30 天免費試用。 60 天退款保證。
kte選項卡201905

Office選項卡為Office帶來了選項卡式界面,使您的工作更加輕鬆

  • 在Word,Excel,PowerPoint中啟用選項卡式編輯和閱讀,發布者,Access,Visio和Project。
  • 在同一窗口的新選項卡中而不是在新窗口中打開並創建多個文檔。
  • 將您的工作效率提高 50%,每天為您減少數百次鼠標點擊!
officetab底部
按評論排序
留言 (15)
還沒有評分。 成為第一位評論!
網站主持人對此評論進行了最小化
運行上面列出的 VBA 代碼,顯示選定的目錄是空的,當它充滿 Excel 文件時。
網站主持人對此評論進行了最小化
太棒了..非常感謝。 它真的節省了我的時間。
網站主持人對此評論進行了最小化
非常感謝,儘管無法像 barry 所說的那樣查看所選目錄中的文件,但無論如何它都會為該目錄中的所有文件創建超鏈接。
網站主持人對此評論進行了最小化
“VBA:列出文件夾中的所有文件名並創建超鏈接”很棒! 它完美地工作! 感謝您的發表! 一個問題...既然您告訴我們如何從文件夾中添加鏈接,是否可以使用這些鏈接從列出的每個文件中的一個或兩個不同的工作表中獲取信息? 對於我們現在有一個列表的每個文件,它們將是相同的單元格。 這將有助於創建一個全面的內容,其中包含指向其他難以理解的文件名的活動鏈接。
網站主持人對此評論進行了最小化
我將如何更改此代碼以使其列出文件夾名稱而不是文件名? 我將如何更改它以檢查文件的子文件夾?
網站主持人對此評論進行了最小化
嗨,艾莉,
要列出目錄中的所有文件夾和子文件夾名稱,下面的 VBA 代碼可以幫助您,請嘗試,希望它可以幫助您。

子文件夾名稱()
Application.ScreenUpdating = False
將 xPath 調暗為字符串
將 xWs 調暗為工作表
Dim fso As Object,j As Long,folder1 As Object
使用 Application.FileDialog(msoFileDialogFolderPicker)
.Title = "選擇文件夾"
。展示
結束
在錯誤恢復下一頁
xPath = Application.FileDialog(msoFileDialogFolderPicker).SelectedItems(1) & "\"
應用程序.工作簿.添加
設置 xWs = Application.ActiveSheet
xWs.Cells(1, 1).Value = xPath
xWs.Cells(2, 1).Resize(1, 5).Value = Array("Path", "Dir", "Name", "Date Created", "Date Last Modified")
設置fso = CreateObject(“ Scripting.FileSystemObject”)
設置文件夾 1 = fso.getFolder(xPath)
getSubFolder 文件夾1
xWs.Cells(2, 1).Resize(1, 5).Interior.Color = 65535
xWs.Cells(2, 1).Resize(1, 5).EntireColumn.AutoFit
Application.ScreenUpdating = True
END SUB
Sub getSubFolder(ByRef prntfld As Object)
將子文件夾調暗為對象
將 subfld 調暗為對象
將 xRow 變暗
對於 prntfld.SubFolders 中的每個子文件夾
xRow = Range("A1").End(xlDown).Row + 1
Cells(xRow, 1).Resize(1, 5).Value = Array(SubFolder.Path, Left(SubFolder.Path, InStrRev(SubFolder.Path, "\")), SubFolder.Name, SubFolder.DateCreated, SubFolder。日期最後修改)
下一個子文件夾
對於 prntfld.SubFolders 中的每個子文件夾
getSubFolder 子文件夾
下一個子文件夾
END SUB
網站主持人對此評論進行了最小化
您將如何編寫代碼以創建路徑和目錄的超鏈接
網站主持人對此評論進行了最小化
嗨,尤里,
要解決您的問題,請嘗試以下代碼:

子文件夾名稱()
Application.ScreenUpdating = False
將 xPath 調暗為字符串
將 xWs 調暗為工作表
將 xRg 調暗為範圍
Dim fso As Object,j As Long,folder1 As Object
使用 Application.FileDialog(msoFileDialogFolderPicker)
.Title = "選擇文件夾"
。展示
結束
在錯誤恢復下一頁
xPath = Application.FileDialog(msoFileDialogFolderPicker).SelectedItems(1) & "\"
應用程序.工作簿.添加
設置 xWs = Application.ActiveSheet
設置 xRg = xWs.Cells(1, 1)
xRg.Value = xPath
xWs.Hyperlinks.Add Anchor:=xRg, Address:=xPath, TextToDisplay:=xPath
xWs.Cells(2, 1).Resize(1, 5).Value = Array("Path", "Dir", "Name", "Date Created", "Date Last Modified")
設置fso = CreateObject(“ Scripting.FileSystemObject”)
設置文件夾 1 = fso.GetFolder(xPath)
getSubFolder 文件夾1
xWs.Cells(2, 1).Resize(1, 5).Interior.Color = 65535
xWs.Cells(2, 1).Resize(1, 5).EntireColumn.AutoFit
Application.ScreenUpdating = True
END SUB
Sub getSubFolder(ByRef prntfld As Object)
將子文件夾調暗為對象
將 subfld 調暗為對象
將 xRow 變暗
將 xStr 調暗為字符串
將 xRg 調暗為範圍
對於 prntfld.SubFolders 中的每個子文件夾
xRow = Range("A1").End(xlDown).Row + 1
Cells(xRow, 1).Resize(1, 5).Value = Array(SubFolder.Path, Left(SubFolder.Path, InStrRev(SubFolder.Path, "\")), SubFolder.Name, SubFolder.DateCreated, SubFolder。日期最後修改)
設置 xRg = Cells(xRow, 1)
xRg.Worksheet.Hyperlinks.Add 錨點:=xRg,地址:=xRg.Value,TextToDisplay:=xRg.Value
設置 xRg = Cells(xRow, 2)
xRg.Worksheet.Hyperlinks.Add 錨點:=xRg,地址:=xRg.Value,TextToDisplay:=xRg.Value
下一個子文件夾
對於 prntfld.SubFolders 中的每個子文件夾
getSubFolder 子文件夾
下一個子文件夾
END SUB
網站主持人對此評論進行了最小化
@skyyang 嗨,可以將此代碼編輯為文件而不是文件夾的超鏈接路徑。 例如,不是超鏈接Folder1中文件夾的路徑,而是超鏈接Folder1中所有文件的路徑(我需要將文本顯示為文件的路徑,而不是文件名),這將是完美的使用我的情況。 感謝您提供的任何幫助:)
網站主持人對此評論進行了最小化
@skyyang 嗨,
可以將此代碼編輯為文件而不是文件夾的超鏈接路徑。 例如,不是超鏈接Folder1中文件夾的路徑,而是超鏈接Folder1中所有文件的路徑(我需要將文本顯示為文件的路徑,而不是文件名),這將是完美的用途我的情況。
感謝您提供的任何幫助:)
網站主持人對此評論進行了最小化
@skyyang 嗨,
可以將此代碼編輯為文件而不是文件夾的超鏈接路徑。 例如,不是超鏈接Folder1中文件夾的路徑,而是超鏈接Folder1中所有文件的路徑(我需要將文本顯示為文件的路徑,而不是文件名),這將是完美的用途我的情況。
感謝您提供的任何幫助:)
網站主持人對此評論進行了最小化
大家好,

ich habe eine bescheidene Frage:
Wie kann ich Eine Liste von Dateinamen in klickbare Links umwandeln 查詢。
Es sind hier Beispiele genannt worden。 Dies hat mich aber nicht weiter gebracht。
Hat wer eine Beispieldatei? Wie aus dem Bericht #28151。

謝謝!
網站主持人對此評論進行了最小化
朋友你好,

在特定文件夾中的所有文件都已通過超鏈接列在活動工作表中之後,您可以單擊單元格以打開超鏈接。 所有文件名都是可點擊的。 請看截圖。

但是我不能把我的 Excel 示例文件發給你,因為文件中列出的那些超鏈接只能從我自己的計算機上打開。 只需使用該方法創建包含特定文件夾中文件的超鏈接。 在新文件中列出帶有超鏈接的文件名之後。 只需單擊超鏈接即可打開它們。 請試一試。

此致,
曼迪
查看附件 (4 / 5)
網站主持人對此評論進行了最小化
如何更改單元格和列的位置? 因為我在 A 列中已有數據,所以我想將宏更改為在 N 列中
網站主持人對此評論進行了最小化
你好,迭戈,
要將結果放入第 N 列,請應用以下代碼:
Sub Example1()
'Updateby Extendoffice
    Dim xFSO As Object
    Dim xFolder As Object
    Dim xFile As Object
    Dim xFiDialog As FileDialog
    Dim xPath As String
    Dim I As Integer
    Set xFiDialog = Application.FileDialog(msoFileDialogFolderPicker)
    If xFiDialog.Show = -1 Then
        xPath = xFiDialog.SelectedItems(1)
    End If
    Set xFiDialog = Nothing
    If xPath = "" Then Exit Sub
    Set xFSO = CreateObject("Scripting.FileSystemObject")
    Set xFolder = xFSO.GetFolder(xPath)
    For Each xFile In xFolder.Files
        I = I + 1
        ActiveSheet.Hyperlinks.Add Cells(I, 14), xFile.Path, , , xFile.Name
    Next
End Sub


請試一試,希望對您有所幫助!
這裡還沒有評論
留下你的意見
以訪客身份發帖
×
評價此帖子:
0   字符
推薦地點

關注我們

版權所有©2009 - 萬維網。extendoffice.com。 | 版權所有。 供電 ExtendOffice。 |
Microsoft和Office徽標是Microsoft Corporation在美國和/或其他國家的商標或註冊商標。
受Sectigo SSL保護