You are here:--carica dati esterni
carica dati esterni2018-02-13T11:40:53+01:00

Home Forum Domande su Excel VBA e MACRO carica dati esterni

  • Autore
    Articoli
  • luigi.castoluigi.casto
    Partecipante
      Post totali: 53

      http://www.filedropper.com/prova1_5

      Buongiorno ,

      avrei bisogno un aiutino per far si di caricare dei dati da altri fogli in questo modo:

      Il file allegato si trova in una cartella , in questa cartella oltre a questo file c’è un’altra cartella che contiene altri file rinominati a stile data , esempio : 12-05-2017 , 18-09-2017 ecc.

      I fogli del file allegato si chiamano anche questi con stile data e vorrei con una pressione sul commandbutton caricare i dati del foglio esterno rinominato con lo stesso nome del foglio attivo nel file.

      Insomma , per esempio, ho attivo il foglio  xxx , premendo il pulsante devo cercare nella sottocartella se esiste un file rinominato xxx e caricare i dati da (A1:Hx) nel file sempre a partire da A1

      Spero di aver spiegato bene .

      Grazie mille

    • sidsid
      Moderatore
        Post totali: 723

        Ciao Luigi
        dovevi caricare anche la cartella con i file in essa contenuti.

      • luigi.castoluigi.casto
        Partecipante
          Post totali: 53

          http://www.filedropper.com/13-05-2017

          http://www.filedropper.com/18-05-2017

          http://www.filedropper.com/23-05-2017

          Buongiorno sid , non mi fa caricare l’intera cartella ma questi sono file di prova che dovrebbero risiedere nella sottocartella chiamata per esempio “Dati” che a sua volta risiede nella cartella principale che possiamo chiamare “XXX”  .

          In “XXX” oltre alla sottocartella “Dati” che contiene i file allegati (solo di prova ma potrebbero essere molti di più) abbiamo anche il file su cui lavoriamo .

          Quindi ricapitolando , Seleziono un foglio che come si può vedere i fogli sono rinominati con delle date, nel file “Prova1” abbiamo un commandbutton che alla pressione dovrebbe cercare nella sottocartella “Dati” se esiste un file con nome identico al nome del foglio selezionato , se esiste copiare tutto il contenuto nella stessa posizione del foglio selezionato .

          Spero di aver spiegato al meglio l’esigenza .

          Grazie  :bye:

        • sidsid
          Moderatore
            Post totali: 723

            Quindi ricapitolando , Seleziono un foglio che come si può vedere i fogli sono rinominati con delle date, nel file “Prova1” abbiamo un commandbutton che alla pressione dovrebbe cercare nella sottocartella “Dati” se esiste un file con nome identico al nome del foglio selezionato.

            Nel primo post hai parlato di foglio attivo; quindi ogni foglio ha un pulsante? Nel caso ti consiglio di chiamare la macro con una combinazione da tastiera, evitando tutti i pulsanti

            se esiste copiare tutto il contenuto nella stessa posizione del foglio selezionato .

            I dati che copierò sostituiscono quelli eventualmente presenti, o si accodano ad essi?

            EDIT
            I file che andrò ad aprire, hanno tutti un unico foglio?

            • Questa risposta è stata modificata 1 anno, 9 mesi fa da sid sid.
          • luigi.castoluigi.casto
            Partecipante
              Post totali: 53

              ciao sid ,

              si in effetti è corretto quanto detto inizialmente e cioè “foglio attivo” che sarebbe poi il foglio che dovrà ricevere i dati . Il pulsante si trova in una userform che si apre alla creazione di ogni foglio  o su richiesta , quindi sempre la stessa .

              Il foglio attivo è attivo in quanto appena creato ,  lo stesso è quindi vuoto .

              I dati presenti nel foglio della sottocartella devono posizionarsi a partire da A1 nel foglio attivo.

              I file che si andranno ad aprire potrebbero avere più fogli ma solo 1 contiene dati .

              Se hai bisogno di altre info chiedi pure e grazie ancora.

              :bye:

              Dimenticavo di dirti che la creazione del nuovo foglio NON la devi considerare perché ho già provveduto io al codice …. che poi ho copiato da un vecchio tuo codice  ;-)

              • Questa risposta è stata modificata 1 anno, 9 mesi fa da luigi.casto luigi.casto.
              • Questa risposta è stata modificata 1 anno, 9 mesi fa da luigi.casto luigi.casto.
            • sidsid
              Moderatore
                Post totali: 723

                …I file che si andranno ad aprire potrebbero avere più fogli ma solo 1 contiene dati …

                Ma io devo avere un riferimento certo del foglio da cui pesco i dati.
                L’ideale sarebbe che tutti abbiano lo stesso nome, oppure la stessa posizione, altrimenti come faccio a sapere da dove copiare i dati?

              • luigi.castoluigi.casto
                Partecipante
                  Post totali: 53

                  giusto , hai ragione

                  allora farò in modo che  il foglio nel file interessato sia 1 solo , quindi il file da dove si attingono i dati avrà 1 solo foglio rinominato con una data  formato  “dd-mm-yyyy” ed equivalente al nome del file stesso

                  • Questa risposta è stata modificata 1 anno, 9 mesi fa da luigi.casto luigi.casto.
                • sidsid
                  Moderatore
                    Post totali: 723

                    E’ indifferente il nome del foglio.

                    Questa la macro sicuramente migliorabile

                    Sub COPIA_DATI()
                    Dim ws_Att As Worksheet
                    Dim wb1 As Workbook, wb2 As Workbook
                    Dim sDir As String, sExt As String
                    
                    sDir = ThisWorkbook.Path & "\Dati\" 'cartella di residenza dei file
                    sExt = ".xlsx" 'estensione dei file
                    
                    Set wb1 = ThisWorkbook 'questo file
                    Set ws_Att = wb1.ActiveSheet 'foglio attivo
                    
                    'verifico l'esistenza del file
                    If Dir(sDir & ws_Att.Name & sExt, vbDirectory) <> vbNullString Then
                        
                        'lo apro
                        Set wb2 = Application.Workbooks.Open(sDir & ws_Att.Name & sExt)
                            'copio i dati
                            wb2.Sheets(1).UsedRange.Copy ws_Att.Range("A1")
                            'adatto le colonne al testo
                            ws_Att.Columns.AutoFit
                        End With
                        wb2.Close False 'chiudo il file aperto senza salvarlo
                        Set wb2 = Nothing
                    Else
                        MsgBox "Il file " & ws_Att.Name & sExt & " non esiste", vbExclamation, "ATTENZIONE"
                    End If
                    
                    Set wb1 = Nothing
                    Set ws_Att = Nothing
                    End Sub
                  • luigi.castoluigi.casto
                    Partecipante
                      Post totali: 53

                      Buongiorno sid e Buongiorno a tutto il forum ,

                      come sempre la tua soluzione è perfetta e si addice esattamente alle mie esigenze .

                      Farò un po’ di prove ma già al primo test posso dire che è quello che il mio file esigeva.

                      Grazie mille e buona giornata , alla prossima anche perché ho un altro rebus che sto cercando di risolvere da solo ma con molta fatica e probabilmente chiederò aiuto.

                      :bye: :bye:   :bye:

                      solo una cosa , nel codice c’è “end with”  ma non c’è prima “with” , ho provato ad escluderlo ed il file funziona lo stesso .

                      Va invece inserito with nel codice o posso escludere end with ?

                      • Questa risposta è stata modificata 1 anno, 9 mesi fa da luigi.casto luigi.casto.
                    • sidsid
                      Moderatore
                        Post totali: 723

                        solo una cosa , nel codice c’è “end with” ma non c’è prima “with” , ho provato ad escluderlo ed il file funziona lo stesso .

                        Va invece inserito with nel codice o posso escludere end with ?

                        Scusa ma è un refuso del codice; ho tolto il With senza poi riprovare il codice; va eliminato altrimenti va in errore

                      • luigi.castoluigi.casto
                        Partecipante
                          Post totali: 53

                          sid , se avessi un foglio che ha il nome divero da data esempio HHH come faccio ad escluderlo dalla ricerca ? perché se per caso è attivo mi va in errore

                          il foglio HHH si trova nel file principale e non in quelli della sottocartella Dati

                          • Questa risposta è stata modificata 1 anno, 8 mesi fa da luigi.casto luigi.casto.
                        • sidsid
                          Moderatore
                            Post totali: 723

                            Se il file HHH.xlsx non esiste nella cartella dati, dovrebbe segnalarlo con il msgbox, non con l’errore di debug; il codice infatti verifica l’esistenza della directory

                          • luigi.castoluigi.casto
                            Partecipante
                              Post totali: 53

                              faccio altre prove e ti faccio sapere , non so perché mi si seleziona sempre il foglio HHH e infatti mi rimanda il messaggio

                            Devi essere loggato per rispondere a questa discussione.

                            Utilizzando il sito, accetti l'utilizzo dei cookie da parte nostra. maggiori informazioni

                            Questo sito utilizza i cookie per fornire la migliore esperienza di navigazione possibile. Continuando a utilizzare questo sito senza modificare le impostazioni dei cookie o cliccando su "Accetta" permetti il loro utilizzo.

                            Chiudi