Estrarre i nomi dei file in un foglio di lavoro (Microsoft Excel)
Carol ha una directory con circa 1.000 file con nomi come YR1905-LIC12345-Smith, Harry-Brown, Mary. Vorrebbe portare tutti questi nomi di file (non i file stessi) in un foglio di lavoro e separare i nomi sul trattino. Pertanto, il nome del file di esempio occuperebbe effettivamente quattro celle in una singola riga. Carol pensa che ci vorrà una macro per essere eseguita, ma non è sicura di come accedere ai nomi dei file in quella macro.
Ovviamente puoi usare una macro per farlo, ma non hai bisogno di usare una macro. Puoi, invece, usare un vecchio trucco dell’era DOS per ottenere ciò di cui hai bisogno.
Al prompt dei comandi (accessibile tramite Windows: Start | Tutti i programmi | Accessori | Prompt dei comandi), naviga finché non ti trovi nella directory che contiene i file. Quindi inserisci quanto segue:
dir /b /a-d > filelist.txt
Questo crea un file di testo (filelist.txt) che contiene un elenco di tutti i file all’interno della directory corrente. Ora, all’interno di Excel, puoi seguire questi passaggi:
-
In Excel, fare clic sullo strumento Apri sulla barra degli strumenti. Excel visualizza la finestra di dialogo Apri.
-
Utilizzando l’elenco a discesa Tipo di file nella parte inferiore della finestra di dialogo, indicare che si desidera aprire File di testo (.prn; .txt; * .csv).
-
Individua e seleziona il file filelist.txt che hai creato al prompt dei comandi.
-
Fare clic su Apri. Excel avvia l’Importazione guidata testo, visualizzando la finestra di dialogo Passaggio 1 di 3. (Vedi figura 1.)
-
Assicurati che l’opzione Delimitato sia selezionata, quindi fai clic su Avanti. Excel visualizza la finestra di dialogo Passaggio 2 di 3.
-
Assicurati di specificare un trattino come delimitatore. (Dovrai fare clic su Altro e quindi inserire un trattino come delimitatore.)
-
Fare clic su Fine. Il tuo file viene importato e spezzato ai trattini, proprio come volevi.
I passaggi precedenti sono abbastanza facili da eseguire, in particolare se è necessario ottenere l’elenco dei file in Excel solo una volta ogni tanto. Se hai bisogno di farlo più regolarmente, dovresti probabilmente cercare un modo per farlo usando una macro. La seguente macro funzionerà molto rapidamente:
Sub GetFileNames() Dim sPath As String Dim sFile As String Dim iRow As Integer Dim iCol As Integer Dim splitFile As Variant 'specify directory to use - must end in "\" sPath = "C:\" iRow = 0 sFile = Dir(sPath) Do While sFile <> "" iRow = iRow + 1 splitFile = Split(sFile, "-") For iCol = 0 To UBound(splitFile) Sheet1.Cells(iRow, iCol + 1) = splitFile(iCol) Next iCol sFile = Dir ' Get next filename Loop End Sub
Quando esegui la macro, assicurati che non ci sia nulla nel foglio di lavoro corrente. (Tutto ciò che è presente verrà sovrascritto). Inoltre, è necessario modificare il percorso della directory assegnato alla variabile sPath all’inizio della macro.
Se viene visualizzato un errore quando si esegue la macro, è probabile che si stia utilizzando Excel 97. La funzione Dividi (utilizzata per suddividere il nome del file in corrispondenza dei trattini) non è stata aggiunta a VBA fino a Excel 2000. Se si utilizza Excel 97 , quindi puoi usare la seguente routine per emulare ciò che fa la funzione Split:
Function Split(Raw As String, Delim As String) As Variant Dim vAry() As String Dim sTemp As String Dim J As Integer Dim Indx As Integer Indx = 0 sTemp = Raw J = InStr(sTemp, Delim) While J > 0 Indx = Indx + 1 ReDim Preserve vAry(1 To Indx) vAry(Indx) = Trim(Left(sTemp, J)) sTemp = Trim(Mid(sTemp, J, Len(sTemp))) J = InStr(sTemp, Delim) Wend Indx = Indx + 1 ReDim Preserve vAry(1 To Indx) vAry(Indx) = Trim(sTemp) Split = vAry() End Function
_Nota: _
Se desideri sapere come utilizzare le macro descritte in questa pagina (o in qualsiasi altra pagina dei siti ExcelTips), ho preparato una pagina speciale che include informazioni utili.
ExcelTips è la tua fonte di formazione economica su Microsoft Excel.
Questo suggerimento (11143) si applica a Microsoft Excel 97, 2000, 2002 e 2003.
Puoi trovare una versione di questo suggerimento per l’interfaccia a barra multifunzione di Excel (Excel 2007 e versioni successive) qui: