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

Come elencare tutte le cartelle e le sottocartelle in Excel?

Hai mai sofferto di questo problema che elenca tutte le cartelle e le sottocartelle da una directory specificata in un foglio di lavoro? In Excel, non esiste un modo rapido e pratico per ottenere contemporaneamente il nome di tutte le cartelle in una directory specifica. Per affrontare l'attività, questo articolo potrebbe aiutarti.

Elenca tutte le cartelle e le sottocartelle con codice VBA

Scheda Office Abilita la modifica a schede e la navigazione in Office e semplifica notevolmente il lavoro ...
Kutools per Excel risolve la maggior parte dei tuoi problemi e aumenta la tua produttività dell'80%
  • Riutilizza qualsiasi cosa: Aggiungi le formule, i grafici e qualsiasi altra cosa più usati o complessi ai tuoi preferiti e riutilizzali rapidamente in futuro.
  • Più di 20 funzioni di testo: Estrai numero dalla stringa di testo; Estrai o rimuovi parte di testi; Converti numeri e valute in parole inglesi.
  • Unisci strumenti: Più cartelle di lavoro e fogli in uno; Unisci più celle / righe / colonne senza perdere dati; Unisci righe duplicate e somma.
  • Strumenti di divisione: Suddivisione dei dati in più fogli in base al valore; Una cartella di lavoro su più file Excel, PDF o CSV; Da una colonna a più colonne.
  • Incolla Salto Righe nascoste / filtrate; Count And Sum di Background Color; Invia e-mail personalizzate a più destinatari in blocco.
  • Super filtro: Crea schemi di filtri avanzati e applicali a qualsiasi foglio; Riordina per settimana, giorno, frequenza e altro; Filtro in grassetto, formule, commenti ...
  • Più di 300 potenti funzionalità; Funziona con Office 2007-2021 e 365; Supporta tutte le lingue; Facile implementazione nella tua azienda o organizzazione.

freccia blu freccia destra Elenca tutte le cartelle e le sottocartelle con codice VBA

Se vuoi ottenere tutti i nomi delle cartelle da una directory specificata, il seguente codice VBA potrebbe aiutarti, per favore fai come segue:

1. Tieni premuto il ALT + F11 chiavi e apre il file Finestra di Microsoft Visual Basic, Applications Edition.

2. Clic inserire > Moduloe incolla il codice seguente nel file Finestra del modulo.

Codice VBA: elenca tutte le cartelle e i nomi delle sottocartelle

Sub FolderNames()
'Update 20141027
Application.ScreenUpdating = False
Dim xPath As String
Dim xWs As Worksheet
Dim fso As Object, j As Long, folder1 As Object
With Application.FileDialog(msoFileDialogFolderPicker)
    .Title = "Choose the folder"
    .Show
End With
On Error Resume Next
xPath = Application.FileDialog(msoFileDialogFolderPicker).SelectedItems(1) & "\"
Application.Workbooks.Add
Set 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")
Set fso = CreateObject("Scripting.FileSystemObject")
Set folder1 = fso.getFolder(xPath)
getSubFolder folder1
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)
Dim SubFolder As Object
Dim subfld As Object
Dim xRow As Long
For Each SubFolder In 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.DateLastModified)
Next SubFolder
For Each subfld In prntfld.SubFolders
    getSubFolder subfld
Next subfld
End Sub

3. Quindi premere F5 chiave per eseguire questo codice e un file Scegli la cartella verrà visualizzata la finestra, quindi è necessario selezionare la directory in cui si desidera elencare i nomi delle cartelle e delle sottocartelle, vedere screenshot:

nomi-cartelle-elenco-doc-1

4. Clic OKe otterrai il percorso della cartella e delle sottocartelle, la directory, il nome, la data di creazione e la data dell'ultima modifica in una nuova cartella di lavoro, vedi screenshot:

nomi-cartelle-elenco-doc-1


Articolo correlato:

Come elencare i file in una directory in un foglio di lavoro in Excel?


I migliori strumenti per la produttività in ufficio

Kutools per Excel risolve la maggior parte dei tuoi problemi e aumenta la tua produttività dell'80%

  • Riutilizzo: Inserisci rapidamente formule complesse, grafici e tutto ciò che hai usato prima; Crittografa celle con password; Crea mailing list e invia email ...
  • Bar Super Formula (modifica facilmente più righe di testo e formula); Layout di lettura (leggi e modifica facilmente un gran numero di celle); Incolla su intervallo filtrato...
  • Unisci celle / righe / colonne senza perdere dati; Contenuto delle celle divise; Combina righe / colonne duplicate... Impedisci celle duplicate; Confronta intervalli...
  • Seleziona Duplica o Unico Righe; Seleziona Righe vuote (tutte le celle sono vuote); Super Find e Fuzzy Find in molte cartelle di lavoro; Selezione casuale ...
  • Copia esatta Più celle senza modificare il riferimento della formula; Riferimenti di creazione automatica a più fogli; Inserisci punti elenco, Caselle di controllo e altro ...
  • Estrai testo, Aggiungi testo, Rimuovi per posizione, Rimuovi spazio; Creare e stampare totali parziali di paging; Converti contenuto e commenti tra celle...
  • Super filtro (salva e applica schemi di filtri ad altri fogli); Ordinamento avanzato per mese / settimana / giorno, frequenza e altro; Filtro speciale in grassetto, corsivo ...
  • Combina cartelle di lavoro e fogli di lavoro; Unisci tabelle in base a colonne chiave; Suddividi i dati in più fogli; Conversione in batch xls, xlsx e PDF...
  • Più di 300 potenti funzionalità. Supporta Office/Excel 2007-2021 e 365. Supporta tutte le lingue. Facile implementazione nella tua azienda o organizzazione. Funzionalità complete Prova gratuita di 30 giorni. Garanzia di rimborso di 60 giorni.
scheda kte 201905

Scheda Office porta l'interfaccia a schede a Office e semplifica notevolmente il lavoro

  • Abilita la modifica e la lettura a schede in Word, Excel, PowerPoint, Publisher, Access, Visio e Project.
  • Apri e crea più documenti in nuove schede della stessa finestra, piuttosto che in nuove finestre.
  • Aumenta la produttività del 50% e riduce ogni giorno centinaia di clic del mouse!
fondo officetab
Commenti (18)
Ancora nessuna valutazione. Puoi essere il primo a votare!
Questo commento è stato fatto dal moderatore sul sito
Grazie mille. Stavo usando il prompt di cmd per avere un txt con le mie cartelle, quindi copiarlo su excel ma ora mi rendi le cose facili :)
Questo commento è stato fatto dal moderatore sul sito
E se avessi bisogno di creare il collegamento anche per la cartella cosa dovrei modificare nella codifica e non possiamo creare il pulsante e collegare la stessa codifica ad esso, quindi sarà utile per gli utenti che non sanno come eseguire le macro
Questo commento è stato fatto dal moderatore sul sito
Ho fatto esattamente quello che hai richiesto. Ho posizionato il logo della mia azienda sul foglio di lavoro, quindi ho fatto clic con il pulsante destro del mouse su di esso e ho assegnato una macro (che è il codice sopra). Puoi anche inserire istruzioni utente su come utilizzare.
Questo commento è stato fatto dal moderatore sul sito
Questo codice ha davvero salvato la giornata. Grazie per averlo condiviso.
Questo commento è stato fatto dal moderatore sul sito
Ciao, ho appena seguito le tue indicazioni ma ricevo errori quando premo F5 per correre. L'errore seguente evidenzia "Dim xWs As Worksheet". C'è un codice aggiornato che posso usare? Errore di compilazione: tipo definito dall'utente non definito
Questo commento è stato fatto dal moderatore sul sito
[quote]Ciao, ho appena seguito le tue indicazioni ma ricevo errori quando premo F5 per correre. L'errore seguente evidenzia "Dim xWs As Worksheet". C'è un codice aggiornato che posso usare? Errore di compilazione: tipo definito dall'utente non definitoDi Caralyn[/quote] Stai usando il componente aggiuntivo Kutools o l'editor VBA di MS Excel? Dal momento che non sto usando il componente aggiuntivo, non sono in grado di duplicare il tuo errore. L'utilizzo di MS VBA Editor funziona senza errori.
Questo commento è stato fatto dal moderatore sul sito
Quando eseguo questo codice funziona ma mostra solo la prima cartella all'interno della cartella che scelgo. Ad esempio, quando eseguo il codice, scelgo "C:\Users\Johnson\Music" (Nota: ho 70 cartelle all'interno della mia cartella Music) Quando il codice viene eseguito mostra solo la prima cartella e quindi elenca tutte le cartelle all'interno di quella cartella. Vorrei che elencasse tutte le cartelle all'interno della cartella Musica.
Questo commento è stato fatto dal moderatore sul sito
Sono con gli altri - funziona fino a un certo punto.

Per me, quel punto è che crea i nuovi s/s, dettaglia la cartella che ho mostrato (nelle celle A1), una barra evidenziata in giallo nella riga 2 con le intestazioni seguite da nient'altro!

La cartella che sto guardando è vuota ad eccezione delle sottocartelle (cioè non esistono file di dati) e le sottocartelle non appaiono affatto.

Qualcuno può aiutarmi a elencare le sottocartelle e i loro file?
Questo commento è stato fatto dal moderatore sul sito
L'ho modificato per aggiungere la dimensione:



SottocartellaNomi()
'Aggiornamento 20141027
Application.ScreenUpdating = False
Dim xPath come stringa
Dim xWs come foglio di lavoro
Dim fso As Object, j As Long, folder1 As Object
Con Application.FileDialog(msoFileDialogFolderPicker)
.Title = "Scegli la cartella"
.Mostrare
Fine Con
On Error Resume Next
xPath = Application.FileDialog(msoFileDialogFolderPicker).SelectedItems(1) & "\"
Applicazione.Cartelle.Aggiungi
Imposta xWs = Application.ActiveSheet
xWs.Cells(1, 1).Valore = xPath
xWs.Cells(2, 1).Resize(1, 6).Value = Array("Percorso", "Dir", "Nome", "Data di creazione", "Data ultima modifica", "Dimensione")
Imposta fso = CreateObject ("Scripting.FileSystemObject")
Imposta cartella1 = fso.getFolder(xPath)
getSubFolder cartella1
xWs.Cells(2, 1).Resize(1, 6).Interior.Color = 65535
xWs.Cells(2, 1).Resize(1, 6).EntireColumn.AutoFit
Application.ScreenUpdating = True
End Sub
Sub getSubFolder(ByRef prntfld As Object)
Dim sottocartella come oggetto
Dim. subfld come oggetto
Dim xRiga quanto a lungo
Per ogni sottocartella in prntfld.SubFolders
xRiga = Intervallo("A1").Fine(xlGiù).Riga + 1
Cells(xRow, 1).Resize(1, 6).Value = Array(SubFolder.Path, Left(SubFolder.Path, InStrRev(SubFolder.Path, "\")), SubFolder.Name, SubFolder.DateCreated, Sottocartella. DateLastModified, SubFolder.Size)
Sottocartella successiva
Per ogni sottofld In prntfld.SubFolders
getSubFolder sottofld
Subfld successivo
End Sub
Questo commento è stato fatto dal moderatore sul sito
Quando includi la funzione SubFolder.Size, lo script non elenca più tutte le sottocartelle, solo il primo livello.
Come posso includere la dimensione e ottenere tutte le sottocartelle elencate?
Questo commento è stato fatto dal moderatore sul sito
Ciao. Potete per favore aiutarmi su un codice che sto faticando a trovare.

Di seguito sono riportati i requisiti per il codice.



1. Il VBA dovrebbe esaminare tutte le cartelle e le sottocartelle
e controlla ogni tipo di file. L'utente dovrebbe fornire solo il percorso per
la cartella in alto. Il codice dovrebbe quindi controllare tutte le cartelle e le sottocartelle
all'interno della cartella superiore.



2. Dopo aver controllato i file, il codice dovrebbe comprimere tutti i file
cui non si accede da più di 3 mesi. Il periodo a cui si accede è
qualcosa che dovrei essere in grado di cambiare in futuro, se necessario. Dovrebbe
mi permetta di cambiarlo a 1 mese o 5 mesi se necessario.



3. Dopo aver compresso i file, il codice dovrebbe eliminare il file
file originali che sono stati compressi.



4. Il file zippato deve essere salvato nello stesso percorso di
file originale.
Questo commento è stato fatto dal moderatore sul sito
Ottimo strumento! Dopo lunghe ricerche ho trovato questo giocattolo accurato :)
Questo commento è stato fatto dal moderatore sul sito
Proprio quello di cui avevo bisogno e istruzioni perfettamente chiare su come farlo funzionare. Molte grazie
Questo commento è stato fatto dal moderatore sul sito
Grazie mille!, molto utile.
Questo commento è stato fatto dal moderatore sul sito
Questo ha funzionato e come... Grazie mille. Solo un'aggiunta: al passaggio 3, ho dovuto fare clic su Entra in e quindi ha funzionato solo il tasto F5 per scegliere la cartella.
Questo commento è stato fatto dal moderatore sul sito
Grazie mille per questo codice utile. è possibile salvare il risultato nella stessa cartella di lavoro non in una nuova?
Questo commento è stato fatto dal moderatore sul sito
Grazie, questo è esattamente ciò di cui avevamo bisogno per registrare le cartelle per i nostri clienti.
Questo commento è stato fatto dal moderatore sul sito
Ottimo lavoro... È molto utile per me, grazie mille
Non ci sono ancora commenti pubblicati qui
Lasciate i vostri commenti
Pubblicazione come ospite
×
Valuta questo post:
0   Personaggi
Posizioni suggerite

Seguici

Copyright © 2009 - www.extendoffice.com. | Tutti i diritti riservati. Offerto da ExtendOffice, | Mappa del sito
Microsoft e il logo Office sono marchi o marchi registrati di Microsoft Corporation negli Stati Uniti e / o in altri paesi.
Protetto da Sectigo SSL