Sviluppare funzionalita su Microsoft Office con VBA ordinare files all'interno di una cartella con vba.

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

    IGNAZIO68
    Partecipante

      Buongiorno  a tutti gli amici del forum, sono alle prime armi con vba anche se magari non ho seguito dei corsi veri e propri quindi non saprei valutare le mie conoscenze , e comunque spero di non commettere molti errori nella presentazione del mio primo quesito :

      dopo aver aperto e visualizzato su un foglio excel un elenco di file (pdf), avrei la necessità di ordinarli all’interno della cartella per nome . Ho registrato la macro per ordinare i files inserendo una variabile per la selezione dinamica dell’elenco da ordinare :una volta ordinato l’elenco su excel, come si ordina materialmente il contenuto all’interno della cartella ?

      Ho provato da diverso tempo a cercare su internet ma non ho trovato (almeno io non ci sono riuscito)  nulla.

      ringrazio chiunque possa suggerirmi qualcosa o magari darmi delle indicazioni su dove posso trarre qualche spunto.

      cordialmente.

      `Private Sub CommandButton1_Click()
          
          Dim ur As Long
          Dim riga As Long
          Dim nome As String
          Dim MIAPATH As String
          
          Rem txt è un textbox dove copio ed incollo il percorso che contiene i file
          MIAPATH = txt.Text & "\"
      
          Rem L'istruzione ChDir modifica la directory o la cartella predefinita
          ChDir MIAPATH
          riga = 3
      
          nome = Dir(MIAPATH & "*.pdf")
      
          While nome <> ""
              Cells(riga, 1) = nome
              nome = Dir
              riga = riga + 1
          Wend
          
          
          
          
      
          Rem macro registrata con l'aggiunta della variabile ur per l'ultima riga
      
          ur = Cells(Rows.Count, "A").End(xlUp).Row
      
          Range("A3:A" & ur).Select
          ActiveWorkbook.Worksheets("Foglio1").Sort.SortFields.Clear
          ActiveWorkbook.Worksheets("Foglio1").Sort.SortFields.Add2 Key:=Range("A3:A" & ur _
              ), SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
          With ActiveWorkbook.Worksheets("Foglio1").Sort
              .SetRange Range("A3:A" & ur)
              .Header = xlGuess
              .MatchCase = False
              .Orientation = xlTopToBottom
              .SortMethod = xlPinYin
              .Apply
          End With
          
          Rem ordina file all'interno della cartella  - inizio
          
          Rem codice ????
          
          Rem ordina file all'interno della cartella  - fine
          
          
      End Sub
      `
      #51329 Score: 0 | Risposta

      Raffaele53
      Partecipante
        24 pts

        Sicuramente non ho capito il problema, intanto vedo alcune incongruenze
        >>>MIAPATH = txt.Text & "\" Dovrebbe essere >>>MIAPATH = "C:\Users\UTENTE\Documents" & "\"
        >>>ChDir MIAPATH ...non serve
        >>>Range("A3:A" & ur).Select ...non serve

        >>>come si ordina materialmente il contenuto all’interno della cartella ?
        Questo non si può fare, intendo dire che solo "Explora File" può farti "visualizzare" la cartella in ordine alfabetico, tipo, data, ultima modifica. Se per caso hai bisogno di una necessità simile (Ex CD-AUDIO), suggerisco di copiarli in una Directrory vuota nell'ordine che desideri

        #51330 Score: 0 | Risposta

        vecchio frac
        Senior Moderator
          272 pts

          Un suggerimento per fare in modo che i file siano ordinati secondo un criterio da te scelto puo' essere quello di anteporre un numero davanti al nome di file. I numeri vanno inseriti a due o tre cifre. In questo modo Windows, se la colonna di ordinamento e' Nome in Esplora file, ordinera' alfabeticamente cominciando dai numeri: 00-xxx.pdf, 01-xxx .pdf, 02-xxx.pdf ecc.

          #51331 Score: 0 | Risposta

          IGNAZIO68
          Partecipante

            Raffaele53 ha scritto:

            Sicuramente non ho capito il problema, intanto vedo alcune incongruenze >>>MIAPATH = txt.Text & "\" Dovrebbe essere >>>MIAPATH = "C:\Users\UTENTE\Documents" & "\"
            >>>ChDir MIAPATH ...non serve
            >>>Range("A3:A" & ur).Select ...non serve

            salve Raffaele, il percorso lo indico all'interno di una textbox in modo da poterlo variare senza la necessità di entrare nel codice.

            Raffaele53 ha scritto:

            Raffaele53 ha scritto:

            >>>Range("A3:A" & ur).Select ...non serve

            >>>ChDir MIAPATH ...non serve

            l'ho utilizzato per la registrazione della macro e ho dimenticato a cancellarlo.

            hai perfettamente ragione.

            vecchio frac ha scritto:

            Un suggerimento per fare in modo che i file siano ordinati secondo un criterio da te scelto puo' essere quello di anteporre un numero davanti al nome di file. I numeri vanno inseriti a due o tre cifre. In questo modo Windows, se la colonna di ordinamento e' Nome in Esplora file, ordinera' alfabeticamente cominciando dai numeri: 00-xxx.pdf, 01-xxx .pdf, 02-xxx.pdf ecc.

            buon suggerimento, ma devo realizzare un programmino  per i colleghi di lavoro e volevo semplificarlo al massimo; credevo effettivamente che si potesse interagire in qualche modo con vba all'interno delle cartelle per ordinare i files per nome . Grazie per le vostre risposte e osservazioni.

            #51343 Score: 0 | Risposta

            tanimon
            Partecipante
              16 pts

              anni fa avevo avuto la stessa necessità e ricordo che con solo due variabili stringa,
              utilizzando l'istruzione Name senza oggetti strani tipo Set objFSO = CreateObject("Scripting.FileSystemObject"),
              utilizzando il carattere speciale "_" con lo stesso criterio numerico suggerito da vecchio frac che saluto,
              ottenevo lo stesso risultato di quello da te richiesto. Nei criteri di windows, i caratteri speciali vengono prima dei numeri, che comunque, obbligherebbero ad utilizzare un contatore per incrementarne la numerazione per inputare l'ordine dei nomi dei file. Purtroppo non dispongo più del file utilizzato a suo tempo e ne ho molto meno per ricostruirlo ammesso di averne ancora la capacità. Spero che qualche esperto del Forum possa aiutarti utilizzando queste indicazioni.
              Buon lavoro.

               

              #51345 Score: 0 | Risposta

              vecchio frac
              Senior Moderator
                272 pts

                Be' si' e' un'alternativa valida. L'underscore in testa ai nomi di file (o delle directory) le fa posizionare in cima alla lista (ci pensa Windows al sorting e l'underscore viene prima degli altri caratteri). E' un sistema che utilizzo nel quotidiano per evidenziare alcuni file ai miei colleghi nelle cartelle condivise, uno o piu' underscore determinano la priorita' (come la coppia Z_ ne determina lo scivolamento in fondo alla lista).

                Pero' se lui ha bisogno anche di un ordinamento diverso oltre al nome proprio del file, avra' bisogno di un indice numerico per differenziare i file in base ai suoi criteri (per esempio, quelli di un certo autore se l'autore e' inserito in mezzo al nome del file).

                #51347 Score: 0 | Risposta

                tanimon
                Partecipante
                  16 pts

                  la richiesta al primo post è chiara ed esplicita,

                  dice inoltre che vorrebbe creare un programmino per i colleghi di lavoro, e non ha specificato
                  la natura dei dati indicati nel nome file tranne il fatto  che volendoli ordinare per nome,

                  e non in un ordine diverso, sono presumibilmente testo. Poi, volendo, si possono aggiungere anche dei 

                  numeri, ma questo non mi sembra sia conforme alla richiesta iniziale.

                   Aspettiamo suggerimenti dai più esperti.

                  IGNAZIO68 ha scritto:

                  avrei la necessità di ordinarli all’interno della cartella per nome

                  #51348 Score: 0 | Risposta

                  IGNAZIO68
                  Partecipante

                    Salve, la mia necessità è quella di ordinare i files senza alcuna variazioni del nome altrimenti per quello che devo fare, non va bene: in definitiva devo ordinare per nome, ascendente o discendente che sia non ha importanza.

                    saluti 

                    #51350 Score: 0 | Risposta

                    scossa
                    Partecipante
                      37 pts

                      IGNAZIO68 ha scritto:

                      la mia necessità è quella di ordinare i files senza alcuna variazioni del nome altrimenti per quello che devo fare, non va bene: in definitiva devo ordinare per nome, ascendente o discendente che sia non ha importanza.

                       

                      tu vorresti, da vba, ordinare i file di una directory (cartella) di un disco, ho capito bene?

                      Se è così, non puoi farlo. In parole molto terra-terra l'0rdinamento dei file di una cartella non è memorizzato nelle "proprietà" dei file ma nella struttura delle singole finestre in cui apri le dir e subdir. Se apri una directory e la ordini Z-A, poi apri la stessa cartella in una nuova finestra la troverai ordinata A-Z e cambiare l'ordinamento di una delle due finestre non avrà alcuna conseguenza sull'altra.

                      #51365 Score: 0 | Risposta

                      tanimon
                      Partecipante
                        16 pts

                        scossa ha scritto:

                        tu vorresti, da vba, ordinare i file di una directory (cartella) di un disco, ho capito bene?

                        Se è così, non puoi farlo.

                        Strano...    probabilmente, ma negli anni ho imparato che con scossa è meglio usare sicuramente,

                        mi ricordo male o chissà dov'ero mentre lo sognavo.

                         

                        #51370 Score: 0 | Risposta

                        scossa
                        Partecipante
                          37 pts

                          tanimon ha scritto:

                          Strano...    probabilmente, ma negli anni ho imparato che con scossa è meglio usare sicuramente,

                          mi ricordo male o chissà dov'ero mentre lo sognavo.

                          forse ti riferisci a quello che hai scritto sopra:

                          tanimon ha scritto:

                          anni fa avevo avuto la stessa necessità e ricordo che con solo due variabili stringa, utilizzando l'istruzione Name senza oggetti strani tipo Set objFSO = CreateObject("Scripting.FileSystemObject"),
                          utilizzando il carattere speciale "_" con lo stesso criterio numerico suggerito da vecchio frac che saluto,
                          ottenevo lo stesso risultato di quello da te richiesto

                          ma lui non vuole cambiare i nomi dei file, quindi .....

                           

                          #51372 Score: 0 | Risposta

                          tanimon
                          Partecipante
                            16 pts

                             

                            scossa ha scritto:

                            ma lui non vuole cambiare i nomi dei file, quindi .....

                            ecco perchè,

                            tanimon ha scritto:

                            ma negli anni ho imparato che con scossa è meglio usare sicuramente

                                  

                            correggimi se sbaglio, ma resta il fatto che non potendo ordinare i nomi  in ordine alfabetico tramite Vba, credo che l'unica modalità per farlo, è utilizzarne l'ordinamento A-Z o Z-A dalla colonna Nome dell'Esplora File di Windows

                             

                             

                             

                            #51379 Score: 0 | Risposta

                            scossa
                            Partecipante
                              37 pts

                              tanimon ha scritto:

                              credo che l'unica modalità per farlo, è utilizzarne l'ordinamento A-Z o Z-A dalla colonna Nome dell'Esplora File di Windows

                            Login Registrati
                            Stai vedendo 13 articoli - dal 1 a 13 (di 13 totali)
                            Rispondi a: ordinare files all'interno di una cartella con vba.
                            Gli allegati sono permessi solo ad utenti REGISTRATI
                            Le tue informazioni: