You are here:---Rispondi a: [RISOLTO] copiare colonne non contigue tra due files diversi
Rispondi a: [RISOLTO] copiare colonne non contigue tra due files diversi 2018-10-20T10:46:07+00:00

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

BySalvBySalv
Amministratore del forum
    Post totali: 319

    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:

    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