Login Registrati
Stai vedendo 6 articoli - dal 1 a 6 (di 6 totali)
  • Autore
    Articoli
  • #32249 Score: 0 | Risposta

    Raffaele53
    Partecipante
      24 pts

      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 Sub
      
      #32250 Score: 0 | Risposta

      Marius44
      Moderatore
        58 pts

        Ciao 

        Aggiungi la barra rovescia ( \ ) prima del punto, così

        nome = Dir(MiaPath & "\*.*")

         

        Ciao,

        Mario

        #32253 Score: 0 | Risposta

        Raffaele53
        Partecipante
          24 pts

          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.

          #32254 Score: 0 | Risposta

          robby
          Partecipante
            2 pts

            Raffaele53 ha scritto:

            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)

             

            #32264 Score: 0 | Risposta

            Raffaele53
            Partecipante
              24 pts

              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.

              #32265 Score: 0 | Risposta

              robby
              Partecipante
                2 pts

                Raffaele53 ha scritto:

                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:

                Sorting a MultiColumn ListBox

                 

              Login Registrati
              Stai vedendo 6 articoli - dal 1 a 6 (di 6 totali)
              Rispondi a: Nomi files in cartella
              Gli allegati sono permessi solo ad utenti REGISTRATI
              Le tue informazioni: