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

Jak wyświetlić wszystkie pliki w folderze i podfolderach w arkuszu?

Czy kiedykolwiek próbowałeś wyświetlić wszystkie nazwy plików z folderu w arkuszu, w tym pliki znajdujące się w jego podfolderach? W rzeczywistości nie ma bezpośredniego sposobu, abyśmy mogli wyświetlić nazwy plików z folderu i jego podfolderu w programie Excel, jednak dzisiaj przedstawię kilka szybkich sztuczek, aby rozwiązać tę pracę.

Wyświetl wszystkie nazwy plików w folderze i podfolderze z kodem VBA

Wyświetlaj wszystkie nazwy plików w folderze i podfolderze szybko i łatwo za pomocą Kutools for Excel


Zwykle program Excel nie ma wbudowanej funkcji do wykonania tego zadania, ale można zastosować następujący kod VBA, aby rozwiązać ten problem.

1. Aktywuj nowy arkusz roboczy, który będzie zawierał listę nazw plików.

2. Przytrzymaj ALT + F11 klucze w programie Excel i otwiera plik Microsoft Visual Basic for Applications okno.

3, Kliknij wstawka > Modułi wklej następujący kod w Okno modułu.

Kod VBA: wyświetla wszystkie nazwy plików w folderze i podfolderze

Sub MainList()
'Updateby Extendoffice
Set folder = Application.FileDialog(msoFileDialogFolderPicker)
If folder.Show <> -1 Then Exit Sub
xDir = folder.SelectedItems(1)
Call ListFilesInFolder(xDir, True)
End Sub
Sub ListFilesInFolder(ByVal xFolderName As String, ByVal xIsSubfolders As Boolean)
Dim xFileSystemObject As Object
Dim xFolder As Object
Dim xSubFolder As Object
Dim xFile As Object
Dim rowIndex As Long
Set xFileSystemObject = CreateObject("Scripting.FileSystemObject")
Set xFolder = xFileSystemObject.GetFolder(xFolderName)
rowIndex = Application.ActiveSheet.Range("A65536").End(xlUp).Row + 1
For Each xFile In xFolder.Files
  Application.ActiveSheet.Cells(rowIndex, 1).Formula = xFile.Name
  rowIndex = rowIndex + 1
Next xFile
If xIsSubfolders Then
  For Each xSubFolder In xFolder.SubFolders
    ListFilesInFolder xSubFolder.Path, True
  Next xSubFolder
End If
Set xFile = Nothing
Set xFolder = Nothing
Set xFileSystemObject = Nothing
End Sub
Function GetFileOwner(ByVal xPath As String, ByVal xName As String)
Dim xFolder As Object
Dim xFolderItem As Object
Dim xShell As Object
xName = StrConv(xName, vbUnicode)
xPath = StrConv(xPath, vbUnicode)
Set xShell = CreateObject("Shell.Application")
Set xFolder = xShell.Namespace(StrConv(xPath, vbFromUnicode))
If Not xFolder Is Nothing Then
  Set xFolderItem = xFolder.ParseName(StrConv(xName, vbFromUnicode))
End If
If Not xFolderItem Is Nothing Then
  GetFileOwner = xFolder.GetDetailsOf(xFolderItem, 8)
Else
  GetFileOwner = ""
End If
Set xShell = Nothing
Set xFolder = Nothing
Set xFolderItem = Nothing
End Function

4. Po wklejeniu kodu do modułu naciśnij F5 klucz do uruchomienia tego kodu oraz plik Makra pojawi się okno dialogowe, wybierz plik Lista główna nazwę makra, a następnie kliknij run przycisk, zobacz zrzut ekranu:

pliki listy dokumentów w podfolderze folderu 1

5. I w Przeglądaj oknie, wybierz folder, w którym chcesz wyświetlić wszystkie nazwy plików, w tym podfoldery, zobacz zrzut ekranu:

pliki listy dokumentów w podfolderze folderu 2

6. Po określeniu folderu kliknij OK przycisk, a wszystkie nazwy plików w folderze i jego podfolderach zostały wymienione w bieżącym arkuszu z komórki A2, patrz zrzuty ekranu:

pliki listy dokumentów w podfolderze folderu 3
1
pliki listy dokumentów w podfolderze folderu 4

Za pomocą powyższego kodu możesz po prostu wyświetlić nazwy plików, czasami musisz wymienić inne atrybuty, takie jak rozmiar pliku, typ pliku, czas utworzenia, folder zawierający itp. Kutools dla programu Excel zawiera przydatną funkcję - Lista nazw plikówDzięki tej funkcji można szybko wyświetlić listę wszystkich lub określonych typów nazw plików w folderze i jego podfolderach.

Kutools dla programu Excel : z ponad 300 poręcznymi dodatkami Excela, które można wypróbować bez ograniczeń w ciągu 30 dni.

Po zainstalowaniu Kutools dla programu Excel, wykonaj następujące czynności:

1, Kliknij Przedsiębiorstwo > Import Eksport > Lista nazw plikówzobacz zrzut ekranu:

2, w Lista nazw plików w oknie dialogowym wykonaj następujące operacje:

A: Kliknij pliki listy dokumentów w podfolderze folderu 7przycisk, aby wybrać folder, w którym chcesz wyświetlić nazwy plików;

B: Określ typ pliku, który chcesz wyświetlić z Typ plików Sekcja;

C: Wybierz jedną jednostkę rozmiaru pliku, którą chcesz wyświetlić z Jednostka rozmiaru pliku sekcja.

Uwagi: Aby wyświetlić nazwy plików z podfolderu, sprawdź Uwzględnij pliki w podkatalogach, możesz również sprawdzić Uwzględnij ukryte pliki i foldery tak jak potrzebujesz. Jeśli sprawdzisz Twórz hiperlinki opcja, utworzy hiperłącza dla każdej nazwy plików i folderów.

Pobierz i bezpłatną wersję próbną teraz!

3. Następnie kliknij OK przycisk, wszystkie pliki zawarte w wybranym folderze i jego podfolderach zostały wyświetlone z następującymi atrybutami w nowym arkuszu. Zobacz zrzut ekranu:

pliki listy dokumentów w podfolderze folderu 8

Kliknij, aby dowiedzieć się więcej szczegółów na temat tego narzędzia Lista nazw plików.

Pobierz i bezpłatną wersję próbną Kutools dla programu Excel teraz!


Kutools dla programu Excel: z ponad 300 poręcznymi dodatkami do programu Excel, które można wypróbować bez ograniczeń w ciągu 30 dni. Pobierz i bezpłatną wersję próbną teraz!

Najlepsze narzędzia biurowe

Kutools dla programu Excel rozwiązuje większość problemów i zwiększa produktywność o 80%

  • Ponowne użycie: Szybko włóż złożone wzory, wykresy i wszystko, czego używałeś wcześniej; Szyfruj komórki z hasłem; Utwórz listę mailingową i wysyłaj e-maile ...
  • Pasek Super Formula (łatwo edytować wiele wierszy tekstu i formuły); Układ do czytania (łatwe odczytywanie i edytowanie dużej liczby komórek); Wklej do filtrowanego zakresu...
  • Scal komórki / wiersze / kolumny bez utraty danych; Podziel zawartość komórek; Połącz zduplikowane wiersze / kolumny... Zapobiegaj zduplikowanym komórkom; Porównaj zakresy...
  • Wybierz Duplikat lub Unikalny Wydziwianie; Wybierz puste wiersze (wszystkie komórki są puste); Super Find i Fuzzy Find w wielu zeszytach ćwiczeń; Losowy wybór ...
  • Dokładna kopia Wiele komórek bez zmiany odwołania do formuły; Automatyczne tworzenie odniesień do wielu arkuszy; Wstaw punktory, Pola wyboru i nie tylko ...
  • Wyodrębnij tekst, Dodaj tekst, Usuń według pozycji, Usuń przestrzeń; Tworzenie i drukowanie podsumowań stronicowania; Konwertuj zawartość komórek i komentarze...
  • Super filtr (zapisz i zastosuj schematy filtrów do innych arkuszy); Zaawansowane sortowanie według miesiąca / tygodnia / dnia, częstotliwości i innych; Specjalny filtr pogrubieniem, kursywą ...
  • Połącz skoroszyty i arkusze robocze; Scal tabele na podstawie kluczowych kolumn; Podziel dane na wiele arkuszy; Konwersja wsadowa xls, xlsx i PDF...
  • Ponad 300 zaawansowanych funkcji. Obsługuje Office / Excel 2007-2021 i 365. Obsługuje wszystkie języki. Łatwe wdrażanie w przedsiębiorstwie lub organizacji. Pełne funkcje 30-dniowa bezpłatna wersja próbna. 60-dniowa gwarancja zwrotu pieniędzy.
karta kte 201905

Karta Office wprowadza interfejs z zakładkami do pakietu Office i znacznie ułatwia pracę

  • Włącz edycję i czytanie na kartach w programach Word, Excel, PowerPoint, Publisher, Access, Visio i Project.
  • Otwieraj i twórz wiele dokumentów w nowych kartach tego samego okna, a nie w nowych oknach.
  • Zwiększa produktywność o 50% i redukuje setki kliknięć myszką każdego dnia!
officetab dół
Sortuj komentarze według
Komentarze (20)
Brak ocen. Oceń jako pierwszy!
Ten komentarz został zminimalizowany przez moderatora na stronie
Dobry artykuł Dzięki :D
Ten komentarz został zminimalizowany przez moderatora na stronie
Szanowni Państwo, Dzięki za to cudowne narzędzie.....!!! anilkumar
Ten komentarz został zminimalizowany przez moderatora na stronie
JAK ZROBIĆ TO ZAPYTANIE, ABY UZYSKAĆ ​​WYŚWIETLANE NAZWY PLIKÓW Z komórki B2 zamiast z A2?
Ten komentarz został zminimalizowany przez moderatora na stronie
Cześć, Satish,
Poniższy kod może pomóc w umieszczeniu nazw plików w dowolnej wybranej komórce, spróbuj:

Podrzędna lista główna()
On Error Resume Next
Set xRg = Application.InputBox("Proszę wybrać komórkę, aby umieścić nazwy plików:", "KuTools For Excel", Selection.Address, , , , , 8)
Jeśli xRg jest niczym, wyjdź z Sub
Ustaw xRg = xRg(1)
Ustaw folder = Application.FileDialog(msoFileDialogFolderPicker)
Jeśli Folder.Pokaż <> -1, Wyjdź z Sub
xDir = Folder.Wybrane pozycje(1)
Lista połączeńFilesInFolder(xRg, xDir, True)
End Sub
Sub ListFilesInFolder(ByVal xRg jako zakres, ByVal xFolderName jako ciąg, ByVal xIsSubfolders jako Boolean)
Dim xFileSystemObject jako obiekt
Dim xFolder jako obiekt
Dim xSubFolder jako obiekt
Przyciemnij xFile jako obiekt
Dim rowIndex As Long
Ustaw xFileSystemObject = CreateObject("Scripting.FileSystemObject")
Ustaw xFolder = xFileSystemObject.GetFolder(xFolderName)
indeks wierszy = 1
Dla każdego pliku xFile w xFolder.Files
xRg.Formuła = xPlik.Nazwa
Ustaw xRg = xRg.Offset(rowIndex)
indeks wierszy = 1
Następny xPlik
Jeśli xIsSubfolders to
Dla każdego xSubFolder w xFolder.SubFolders
ListFilesInFolder xRg, xSubFolder.Path, True
Następny xSubfolder
End If
Ustaw plik x = Nic
Ustaw xFolder = Nic
Ustaw xFileSystemObject = Nic
End Sub
Ten komentarz został zminimalizowany przez moderatora na stronie
świetny!!! kocham to, dzięki
Ten komentarz został zminimalizowany przez moderatora na stronie
Nie jestem pewien… ale czy bierze pod uwagę długie foldery. Napisałem podobny kod i nie powiedzie się, gdy ścieżka folderu/pliku przekracza 256 znaków? Myśli proszę?
Ten komentarz został zminimalizowany przez moderatora na stronie
Dziękuję bardzo za przydatny artykuł!
Jak mogę automatycznie zaktualizować listę i zauważyć zmiany?
Ten komentarz został zminimalizowany przez moderatora na stronie
Pomogło mi to przekonwertować mój kod, aby uzyskać wywołanie rekurencyjne, ale zastanawiam się, w jaki sposób używasz obiektów. Wolę definiować moje obiekty jako takie, jakie są, czy to skoroszyty, arkusze czy obiekty systemu plików. (dim wbDest jako excel.workbook, dim wsDest jako excel.worksheet na przykład. W ten sposób nigdy nie muszę się martwić, czym jest aktywny arkusz.

Zastanawiałem się również nad użyciem .show - if.show <>-1 i nie mogę oprzeć się wrażeniu, że ludziom byłoby łatwiej zrozumieć, jeśli zamiast tego użyjesz if.show = false.

A jeśli chodzi o pisanie do celu, czułem, że używanie komórek i formuły wydaje się być długą drogą

Czyli w moim kodzie mam np.
wsDest.Range("B" i CurRow) = nazwa.pliku
(CurRow = Bieżący rząd)

Nie krytykuję, tylko zastanawiam się, czy robisz to z jakiegoś innego powodu niż osobiste preferencje. - Zawsze chętny do nauki


Ale poza tym dzięki za pomoc
Ten komentarz został zminimalizowany przez moderatora na stronie
Dziękuję za ten kod, który pomógł mi z prośbą o pracę, teraz mogę zaimportować te wyniki do programu Access w celu dalszej transformacji.Doceń to.
Ten komentarz został zminimalizowany przez moderatora na stronie
Sub "GetFileOwner()" w powyższym kodzie nie jest używane.
Ten komentarz został zminimalizowany przez moderatora na stronie
Witaj, skoczku,
Powyższy kod działa dobrze w moim Excelu, której wersji Excela używasz?
Ten komentarz został zminimalizowany przez moderatora na stronie
Extremamente elegante este codigo!
Ten komentarz został zminimalizowany przez moderatora na stronie
Jaki był cel parametru ByVal xIsSubfolders As Boolean?
Ten komentarz został zminimalizowany przez moderatora na stronie
Mój VBA mówi, że folder zmiennej nie jest zdefiniowany. Czy ktoś wie, dlaczego tak jest?
Ten komentarz został zminimalizowany przez moderatora na stronie
Naprawdę nowy w VBA. jak korzystać z powyższego kodu, ale mam wbudowaną ścieżkę do pliku, więc nie muszę go szukać za każdym razem?
Ten komentarz został zminimalizowany przez moderatora na stronie
Hej, więc jeśli mam po prostu wyodrębnić rozszerzenie z całej listy, gdzie mam dokonać zmian?
Ten komentarz został zminimalizowany przez moderatora na stronie
Czy działa też na MAC?
Ten komentarz został zminimalizowany przez moderatora na stronie
Zmodyfikowałem Twój kod, aby można go było ponownie przetwarzać i ponownie uruchamiać okno dialogowe folderu, dopóki nie naciśniesz Anuluj.Niestety generuje to pewne błędy.1. Jeśli podfoldery zostaną zaangażowane w wybrany folder, następny wybrany folder stanie się poza kolejnością numeryczną.2. Jeśli podfoldery zostaną włączone do wybranego folderu, przycisk Anuluj musi zostać powtórzony i powtórzony w zależności od liczby dodanych folderów.
Kod:
Podrzędna lista główna()
„Aktualizuj do” Extendoffice
Ustaw folder = Application.FileDialog(msoFileDialogFolderPicker)
Jeśli folder.Pokaż <> -1 Następnie wyjdź z sub
xDir = folder.Wybrane pozycje(1)
Lista połączeńFilesInFolder(xDir, True)
End SubSub ListFilesInFolder(ByVal xFolderName As String, ByVal xIsSubfolders As Boolean)
Dim xFileSystemObject jako obiekt
Dim xFolder jako obiekt
Dim xSubFolder jako obiekt
Przyciemnij xFile jako obiekt
Dim rowIndex As Long
Ustaw xFileSystemObject = CreateObject("Scripting.FileSystemObject")
Ustaw xFolder = xFileSystemObject.GetFolder(xFolderName)
rowIndex = Application.ActiveSheet.Range("A65536").End(xlUp).Row + 1
Dla każdego pliku xFile w xFolder.Files
Application.ActiveSheet.Cells(rowIndex, 1).Formula = xFile.Name
indeks wierszy = indeks wierszy + 1
Następny xPlik
Jeśli xIsSubfolders to
Dla każdego xSubFolder w xFolder.SubFolders
ListFilesInFolder xSubFolder.Path, Prawda
Następny xSubfolder
End If
Ustaw plik x = Nic
Ustaw xFolder = Nic
Ustaw xFileSystemObject = Nic
End Sub

jakieś pomysły?
Ten komentarz został zminimalizowany przez moderatora na stronie
Przepraszam... Podałem zły kod (poniżej), oto kod, który zmodyfikowałem...
Kod:
Podrzędna lista główna()
On Error Resume Next
Dim xFileSystemObject jako obiekt
Dim xFolder jako obiekt
Dim xSubFolder jako obiekt
Przyciemnij xFile jako obiekt
Dim rowIndex As Long
Ciemna odpowiedź jako wariant
odpowiedź = Fałsz
Z Application.FileDialog(msoFileDialogFolderPicker)
.Title = "Wybierz folder"
.AllowMultiSelect = Fałsz
Ustaw folder = Application.FileDialog(msoFileDialogFolderPicker)
Jeśli folder.Show = -1 Wtedy
xDir = folder.Wybrane pozycje(1)
Więcej
Exit Sub
End If
Kończyć z

Lista połączeńFilesInFolder(xDir, True)
End Sub

Sub ListFilesInFolder(ByVal xFolderName jako ciąg, ByVal xIsSubfolders jako Boolean)
Ustaw xFileSystemObject = CreateObject("Scripting.FileSystemObject")
Ustaw xFolder = xFileSystemObject.GetFolder(xFolderName)
rowIndex = Application.ActiveSheet.Range("A65536").End(xlUp).Row + 1

' Dodaj spację, a następnie nazwę folderu do arkusza roboczego
indeks wierszy = indeks wierszy + 1
Z Application.ActiveSheet.Cells(rowIndex, 1)
.Wartość = xFolder.Nazwa
.Rozmiar.Czcionki = 12
.Font.FontStyle = "Pogrubiona kursywa"
Kończyć z
indeks wierszy = indeks wierszy + 1

Dla każdego pliku xFile w xFolder.Files
Application.ActiveSheet.Cells(rowIndex, 1).Formula = xFile.Name
indeks wierszy = indeks wierszy + 1
Następny xPlik
Jeśli xIsSubfolders to
Dla każdego xSubFolder w xFolder.SubFolders
ListFilesInFolder xSubFolder.Path, Prawda
Następny xSubfolder
indeks wierszy = indeks wierszy + 1
End If

Ustaw plik x = Nic
Ustaw xFolder = Nic
Ustaw xFileSystemObject = Nic

Zadzwoń do głównej listy
End Sub


Ten komentarz został zminimalizowany przez moderatora na stronie
Dobra robota, dokładnie to, co próbowałem stworzyć. Ale to jest o 1000% lepsze.
Nie ma tu jeszcze żadnych komentarzy
Zostaw swój komentarz
Publikowanie jako gość
×
Oceń ten post:
0   Postacie
Sugerowane lokalizacje

Bądż na bieżąco

Prawa autorskie © 2009 - www.extendoffice.com. | Wszelkie prawa zastrzeżone. Zasilany przez ExtendOffice, | Mapa strony
Microsoft i logo Office są znakami towarowymi lub zastrzeżonymi znakami towarowymi Microsoft Corporation w Stanach Zjednoczonych i / lub innych krajach.
Chronione przez Sectigo SSL