You are here:Home-Domande su Excel VBA e MACRO-[RISOLTO] copiare colonne non contigue tra due files diversi
[RISOLTO] copiare colonne non contigue tra due files diversi2018-10-20T12:35:10+02:00

Home Forum Domande su Excel VBA e MACRO [RISOLTO] copiare colonne non contigue tra due files diversi

Visualizzazione 4 filoni di risposte
  • Autore
    Post
    • bg66bg66
      Partecipante
        Post totali: 60

        Ciao a tutti,

        vorrei copiare alcune colonne del file ELEDIP_F (precisamente colonne  da E a J , L e O)

        https://www.dropbox.com/s/5xt4fm9uiotpu3y/ELEDIP_F.xlsx?dl=0

         

        in un file diverso ossia 0_ELEDIP.xlsm.

        https://www.dropbox.com/s/yxxt4igcofycy4s/0_ELEDIP.xlsm?dl=0

        Per ora sono riuscito a copiare l’intero foglio tra i due file:

        >>>>>>>>>>>>>>>>>>>

        Sub ImportaDati()
        Dim wkb As Workbook, nome$
        nome = Application.GetOpenFilename
        Set wkb = Workbooks.Open(nome)
        Windows(wkb.Name).Visible = False
        wkb.Sheets(1).UsedRange.Copy Destination:= _
        ThisWorkbook.Sheets(“ELEDIP”).Range(“A1”) ‘<==========

        Application.DisplayAlerts = False
        wkb.Close
        Application.DisplayAlerts = True
        Set wkb = Nothing
        End Sub
        <<<<<<<<<<<<<<<<<<<<<<<<<<

        Grazie per l’aiuto.

         

      • BySalvBySalv
        Amministratore del forum
          Post totali: 720

          Ciao Bg66, puoi fare in 2 modi, il primo come hai fatto copiare l’intero foglio e poi nella copia eliminare le colonne che non servono.

          il secondo dovrei sapere dove copiare i dati, non  l’hai detto, se sono in corrispondenza delle descrizioni delle colonne, ti preparo la macro che fa il lavoro, se non è cosi fai sapere.

          Ciao By Sal :bye:

           

           

          Ciao By Sal (8-)
          se ti piace la soluzione aiuta a sostenere il Forum con una DONAZIONE a piacere, Grazie

        • bg66bg66
          Partecipante
            Post totali: 60

            Ciao bySAl

            preferirei l’opzione 2 con i dati in corrispondenza delle descrizioni ( a partire dalla riga 2 cosi da mantenere le intestazioni).

            Ovviamente non voglio approfittare della tua disponibilità quindi se mi dai un piccolo start poi provo a sbrigarmela da solo.

            Grazie

            Gene

            PS Se è possibile modificare il titolo ho scritto Fules invece di files

             

            • Questa risposta è stata modificata 1 anno, 8 mesi fa da bg66bg66.
            • Questa risposta è stata modificata 1 anno, 8 mesi fa da bg66bg66.
          • BySalvBySalv
            Amministratore del forum
              Post totali: 720

              Ciao Gene, eccoti il file con la macro che fa il lavoro, i 2 file devono stare nella stessa cartella altrimenti poi in “sPath” devi inserire il percorso esatto dove si trova il file, il nome del file ed il nome del foglio, li ho inseriti nel foglio1, in modo che non si debba cambiare la macro basta sostituire i dati nelle celle.

              la macro è questa, l’ho commentata un poco

              Sub Importa()
              Dim r, c, x, sPath, file, Foglio, sh, rng, sh1 As Worksheet, sh2 As Worksheet
              
              Set sh1 = Worksheets("ELEDIP")
              Set sh2 = Worksheets("Foglio1")
              
              sPath = ActiveWorkbook.Path & "\"
              sh1.Activate
              r = sh1.Cells(Rows.Count, 1).End(xlUp).Row
              sh1.Range("A2:H" & r).ClearContents
              file = sPath & sh2.Cells(1, 2) 'prende nome file e foglio dove sono i dati
              Foglio = sh2.Cells(2, 2)
              Workbooks.Open Filename:=file 'apre il file dell'archivio
              Application.DisplayAlerts = False 'blocca finestre di avviso
              sh = Foglio
              ActiveWorkbook.Worksheets(sh).Select 'seleziona il foglio dell'archivio
              r = Cells(Rows.Count, 5).End(xlUp).Row 'trova l'ultima riga dell'archivio
              rng = Range(Cells(2, 1), Cells(r, 16)) 'mette in matrice tutti i dati
              ActiveWorkbook.Close 'chiude il file aperto
              Application.DisplayAlerts = True 'riabilita le finestre di avviso
              r = 2
              c = 1
              For x = 1 To UBound(rng) 'scrive i dati
                  sh1.Cells(r, c) = rng(x, 5)
                  sh1.Cells(r, c + 1) = rng(x, 6)
                  sh1.Cells(r, c + 2) = rng(x, 7)
                  sh1.Cells(r, c + 3) = rng(x, 8)
                  sh1.Cells(r, c + 4) = rng(x, 9)
                  sh1.Cells(r, c + 5) = rng(x, 10)
                  sh1.Cells(r, c + 6) = rng(x, 12)
                  sh1.Cells(r, c + 7) = rng(x, 15)
                  r = r + 1
              Next x
              End Sub

              in effetti apro il file e mi prendo tutti i dati mettendoli in una matrice, poi chiudo il file, non è necessario tenerlo aperto, e dopo mi scrivo i dati che mi servono sul mio foglio prendendo i dati dalla matrice.

              questo il link al file
              https://mega.nz/#!0YdhBCLZ!thOkut9jOXNjCWAYt1enwOdOb1_QVdYtJrgt24ZNUcM

              Ciao By Sal :bye:

              Ciao By Sal (8-)
              se ti piace la soluzione aiuta a sostenere il Forum con una DONAZIONE a piacere, Grazie

            • bg66bg66
              Partecipante
                Post totali: 60

                [RISOLTO]

                Ciao bySalv,

                è perfetta.

                Unica correzione effettuata per mantenere le intestazioni:
                For x = <strong>2</strong> To UBound(rng) 'scrive i dati

                Grazie ancora e alla prossima.

                Gene

                 

            Visualizzazione 4 filoni di risposte
            • Il topic ‘[RISOLTO] copiare colonne non contigue tra due files diversi’ è chiuso a nuove risposte.