› Sviluppare funzionalita su Microsoft Office con VBA › Nomi files in cartella
-
AutoreArticoli
-
Ciao a tutti
Dovrei estrare da una cartella i nomi dei files in ordine di data. Tramite Dos l'opzione sarebbe con /od
Grazie mille
Sub Importa() Dim riga As Integer Dim nome As String Dim MiaPath As String MiaPath = Range("A1") ChDir MiaPath riga = 1 Columns("B:B").ClearContents nome = Dir(MiaPath & "*.*") ' non funziona se aggiungo /od While nome <> "" Cells(riga, 2) = nome nome = Dir riga = riga + 1 Wend End SubCiao
Aggiungi la barra rovescia ( \ ) prima del punto, così
nome = Dir(MiaPath & "\*.*")
Ciao,
Mario
La barra rovesciata e già in A1 Ex C:\temp\ e il tutto funziona.
Quello che non riesco è con l'opzione di "DOS", esempio... nome = Dir(MiaPath & "*.* /od") per estrarli dalla data più vecchia.Tramite Dos l'opzione sarebbe con /od
Già, ma tu non sei in MS-DOS ma in Excel e non puoi usare MS-DOS, a meno che non fai un redirect dell'output (difficile da fare se non conosci a menadito quali funzioni API usare e come usarle).
Una soluzione più semplice è quella di caricare l'elenco dei file insieme alla propria data (quindi 2 colonne), poi ordini il tutto in base alla data ed infine elimini la colonna con le date, ovvero:
Cells(riga, 2) = nome Cells(riga, 3) = FileDateTime(MiaPath & nome)Grazie dell'info riguardo il "FileDateTime" che non conoscevo.
Finora ho creato un TXT con ...Shell "cmd /c " & "dir " & fpath & "\A\ /od>" & fpath & Nome1 (/od-estrati per data)
Subito dopo l'apro per estrare i nomi (Debug, non trova il TXT). Ho aggiunto un Application.Wait (Now + TimeValue("0:00:01")) e funziona.
Un domani che ci saranno migliaia di files.., credo che andrà ancora in errore?Non mi piace il metodo (sia del TXT + Application.Wait + eliminare il TXT).
Chiedevo se esisteva qualche altro metodo.Non mi piace il metodo (sia del TXT + Application.Wait + eliminare il TXT). Chiedevo se esisteva qualche altro metodo.
In effetti il redirect su TXT può non essere molto efficiente, eventualmente potresti usare un loop che tenta di aprire il file TXT in modo esclusivo, intercettando l'errore in modo che lo apra solo quando il comando DIR abbia concluso.
Altro modo: se dovessi farlo io mi appoggerei ad un ListBox multi-colonna che andrebbe poi ordinato sulla data, vedi questo esempio:
-
AutoreArticoli
