maurogsc.eu
mauro gamberini


home ==> Excel: come fare per ==> Copia/incolla fra due fogli dello stesso  file

Copia/incolla fra due fogli dello stesso file - VBA

NOTA. La soluzione ed il codice sono forniti *così come sono* e l’autore declina ogni responsabilità per eventuali problemi causati dal codice o dalla soluzione proposta se usati impropriamente. Create e utilizzate una copia del file per le vostre prove, *prima* di utilizzare il codice o la soluzione in files importanti.

0 - Contenuto

  1. Premessa e contesto (leggere!)
  2. Copia/incolla la cella A1 del Foglio1 nella cella A1 del Foglio2(tutto)
  3. Copia/incolla la cella A1 del Foglio1 nella cella A1 del Foglio2(valore)
  4. Copia/incolla del Range A1:C10 del Foglio1 a partire dalla cella A1 del Foglio2(tutto)
  5. Copia/incolla del Range A1:C10 del Foglio1 a partire dalla cella A1 del Foglio2(valore)
  6. Copia/incolla di celle non attigue(A1:A10, C1:C10) del Foglio1 a partire dalla cella A1 del Foglio2(tutto)
  7. Copia/incolla di celle non attigue(A1:A10, C1:C10) del Foglio1 a partire dalla cella A1 del Foglio2(valore)
  8. Copia/incolla di celle non attigue(A1:A10, C1:C10) del Foglio1 in Range diversi del Foglio2(tutto)
  9. Copia/incolla di celle non attigue(A1:A10, C1:C10) del Foglio1 in Range diversi del Foglio2(valore)
  10. Copia/incolla la formattazione(non il valore) della cella A1 del Foglio1 nella cella A1 del Foglio2
  11. Copia/incolla la formattazione(non il valore) del Range A1:C10 del Foglio1 sul Foglio2 a partire dalla cella A1.

1 - Premessa e contesto. (top)
Modificate i riferimenti alle celle ed i nomi dei fogli con i vostri. Negli esempi viene sempre utilizzata quella che in Excel è chiamata programmazione ad oggetti e vengono sempre evitati gli inutili Select/Activate che, oltre a rallentare l'esecuzione del codice, sono forieri di grossi guai.

2 - Copia/incolla la cella A1 del Foglio1 nella cella A1 del Foglio2(tutto). (top)
Vengono copiati il contenuto (valore o funzione/formula) e le formattazioni della cella (non quelle relative alle dimensioni di riga e colonna). Codice da copia/incollare in un modulo standard.

Public Sub m()
    
    'dichiaro le variabili
    Dim sh1 As Worksheet
    Dim sh2 As Worksheet
    
    'metto un riferimento ai due fogli
    With ThisWorkbook
        Set sh1 = .Worksheets("Foglio1")
        Set sh2 = .Worksheets("Foglio2")
    End With
    
    With sh1
        'copio da un foglio all'altro
        .Range("A1").Copy Destination:=sh2.Range("A1")
    End With
    
    'Set a Nothing delle variabili oggetto
    Set sh2 = Nothing
    Set sh1 = Nothing
    
End Sub

3 - Copia/incolla la cella A1 del Foglio1 nella cella A1 del Foglio2(valore). (top)
Viene copiato solo il valore (non la funzione/formula o le formattazioni). Codice da copia/incollare in un modulo standard.

Public Sub m()
    
    'dichiaro le variabili
    Dim sh1 As Worksheet
    Dim sh2 As Worksheet
    
    'metto un riferimento ai due fogli
    With ThisWorkbook
        Set sh1 = .Worksheets("Foglio1")
        Set sh2 = .Worksheets("Foglio2")
    End With
    
    With sh1
        'copio da un foglio all'altro
        sh2.Range("A1").Value = .Range("A1").Value
    End With
    
    'Set a Nothing delle variabili oggetto
    Set sh2 = Nothing
    Set sh1 = Nothing
    
End Sub

4 - Copia/incolla del Range A1:C10 del Foglio1 a partire dalla cella A1 del Foglio2(tutto). (top)
Vengono copiati il contenuto (valore o funzione/formula) e le formattazioni delle celle (non quelle relative alle dimensioni di riga e colonna). Codice da copia/incollare in un modulo standard.

Public Sub m()
    
    'dichiaro le variabili
    Dim sh1 As Worksheet
    Dim sh2 As Worksheet
    
    'metto un riferimento ai due fogli
    With ThisWorkbook
        Set sh1 = .Worksheets("Foglio1")
        Set sh2 = .Worksheets("Foglio2")
    End With
    
    With sh1
        'copio da un foglio all'altro
        .Range("A1:C10").Copy Destination:=sh2.Range("A1")
    End With
    
    'Set a Nothing delle variabili oggetto
    Set sh2 = Nothing
    Set sh1 = Nothing
    
End Sub

Nota. La cella di destinazione può ovviamente essere diversa.

5 - Copia/incolla del Range A1:C10 del Foglio1 a partire dalla cella A1 del Foglio2(valore). (top)
Viene copiato solo il valore (non la funzione/formula o le formattazioni). Codice da copia/incollare in un modulo standard.

Public Sub m()
    
    'dichiaro le variabili
    Dim sh1 As Worksheet
    Dim sh2 As Worksheet
    
    'metto un riferimento ai due fogli
    With ThisWorkbook
        Set sh1 = .Worksheets("Foglio1")
        Set sh2 = .Worksheets("Foglio2")
    End With
    
    With sh1
        'copio da un foglio all'altro
        .Range("A1:C10").Copy
        sh2.Range("A1").PasteSpecial xlPasteValues
    End With
    Application.CutCopyMode = False
    
    'Set a Nothing delle variabili oggetto
    Set sh2 = Nothing
    Set sh1 = Nothing
    
End Sub

Nota. La cella di destinazione può ovviamente essere diversa.

6 - Copia/incolla di celle non attigue(A1:A10, C1:C10) del Foglio1 a partire dalla cella A1 del Foglio2(tutto). (top)
Vengono copiati il contenuto (valore o funzione/formula) e le formattazioni delle celle (non quelle relative alle dimensioni di riga e colonna).

    1.  Nell'esempio vengono copiati i Range A1:A10 e C1:C10 del Foglio1 che verranno incollati in A1:B10 del Foglio2. Codice da copia/incollare in un modulo standard.

Public Sub m()

    'dichiaro le variabili
    Dim sh1 As Worksheet
    Dim sh2 As Worksheet
    Dim rng As Range

    'metto un riferimento ai due fogli
    With ThisWorkbook
        Set sh1 = .Worksheets("Foglio1")
        Set sh2 = .Worksheets("Foglio2")
    End With

    With sh1
        'metto un riferimento ai Range da copiare
        Set rng = Union(.Range("A1:A10"), .Range("C1:C10"))
        'copio da un foglio all'altro
        rng.Copy Destination:=sh2.Range("A1")
    End With

    'Set a Nothing delle variabili oggetto
    Set rng = Nothing
    Set sh2 = Nothing
    Set sh1 = Nothing

End Sub

    2. Nell'esempio vengono copiati i Range A1:A10 e C1:C10 del Foglio1 che verranno incollati in A1:A10 e C1:C10 del Foglio2. Codice da copia/incollare in un modulo standard.

Public Sub m()

    'dichiaro le variabili
    Dim sh1 As Worksheet
    Dim sh2 As Worksheet
    Dim rng As Range
    Dim a As Range

    'metto un riferimento ai due fogli
    With ThisWorkbook
        Set sh1 = .Worksheets("Foglio1")
        Set sh2 = .Worksheets("Foglio2")
    End With

    With sh1
        'metto un riferimento ai Range da copiare
        Set rng = Union(Range("A1:A10"), Range("C1:C10"))
        'copio da un foglio all'altro
        For Each a In rng.Areas
            .Range(a.Address).Copy Destination:=sh2.Range(a.Address)
        Next
    End With

    'Set a Nothing delle variabili oggetto
    Set a = Nothing
    Set rng = Nothing
    Set sh2 = Nothing
    Set sh1 = Nothing

End Sub

7 - Copia/incolla di celle non attigue(A1:A10, C1:C10) del Foglio1 a partire dalla cella A1 del Foglio2(valore). (top)
Viene copiato solo il valore (non la funzione/formula o le formattazioni)..

    1. Nell'esempio vengono copiati i Range A1:A10 e C1:C10 del Foglio1 che verranno incollati in A1:B10 del Foglio2. Codice da copia/incollare in un modulo standard.

Public Sub m()

    'dichiaro le variabili
    Dim sh1 As Worksheet
    Dim sh2 As Worksheet
    Dim rng As Range

    'metto un riferimento ai due fogli
    With ThisWorkbook
        Set sh1 = .Worksheets("Foglio1")
        Set sh2 = .Worksheets("Foglio2")
    End With

    With sh1
        'metto un riferimento ai Range da copiare
        Set rng = Union(Range("A1:A10"), Range("C1:C10"))
        'copio da un foglio all'altro
        .Range(rng.Address).Copy
        sh2.Range("A1").PasteSpecial xlPasteValues
    End With
    Application.CutCopyMode = False
     
    'Set a Nothing delle variabili oggetto
    Set rng = Nothing
    Set sh2 = Nothing
    Set sh1 = Nothing

End Sub

    2. Nell'esempio vengono copiati i Range A1:A10 e C1:C10 del Foglio1 che verranno incollati in A1:A10 e C1:C10 del Foglio2. Codice da copia/incollare in un modulo standard.

Public Sub m()

    'dichiaro le variabili
    Dim sh1 As Worksheet
    Dim sh2 As Worksheet
    Dim rng As Range
    Dim a As Range

    'metto un riferimento ai due fogli
    With ThisWorkbook
        Set sh1 = .Worksheets("Foglio1")
        Set sh2 = .Worksheets("Foglio2")
    End With

    With sh1
        'metto un riferimento ai Range da copiare
        Set rng = Union(Range("A1:A10"), Range("C1:C10"))
        'copio da un foglio all'altro
        For Each a In rng.Areas
            .Range(a.Address).Copy
            sh2.Range(a.Address).PasteSpecial xlPasteValues
        Next
    End With
    Application.CutCopyMode = False
     
    'Set a Nothing delle variabili oggetto
    Set a = Nothing
    Set rng = Nothing
    Set sh2 = Nothing
    Set sh1 = Nothing

End Sub

8 - Copia/incolla di celle non attigue(A1:A10, C1:C10) del Foglio1 in Range diversi del Foglio2(tutto). (top)
Vengono copiati il contenuto (valore o funzione/formula) e le formattazioni delle celle (non quelle relative alle dimensioni di riga e colonna). Nell'esempio vengono copiati i Range A1:A10 e C1:C10 del Foglio1 che verranno incollati a partire da H10(A1:A10) e C5(C1:C10) nel Foglio2.  Codice da copia/incollare in un modulo standard.

Public Sub m()

    'dichiaro le variabili
    Dim sh1 As Worksheet
    Dim sh2 As Worksheet
    Dim rng As Range

    'metto un riferimento ai due fogli
    With ThisWorkbook
        Set sh1 = .Worksheets("Foglio1")
        Set sh2 = .Worksheets("Foglio2")
    End With

    With sh1
        'metto un riferimento ai Range da copiare
        Set rng = Union(.Range("A1:A10"), .Range("C1:C10"))
    End With
    With rng
        'copio da un foglio all'altro
        .Areas(1).Copy Destination:=sh2.Range("H10")
        .Areas(2).Copy Destination:=sh2.Range("C5")
    End With
     
    'Set a Nothing delle variabili oggetto
    Set rng = Nothing
    Set sh2 = Nothing
    Set sh1 = Nothing

End Sub

9 - Copia/incolla di celle non attigue(A1:A10, C1:C10) del Foglio1 in Range diversi del Foglio2(valore). (top)
Viene copiato solo il valore (non la funzione/formula o le formattazioni). Nell'esempio vengono copiati i Range A1:A10 e C1:C10 del Foglio1 che verranno incollati a partire da H10(A1:A10) e C5(C1:C10) nel Foglio2.  Codice da copia/incollare in un modulo standard.

Public Sub m()

    'dichiaro le variabili
    Dim sh1 As Worksheet
    Dim sh2 As Worksheet
    Dim rng As Range

    'metto un riferimento ai due fogli
    With ThisWorkbook
        Set sh1 = .Worksheets("Foglio1")
        Set sh2 = .Worksheets("Foglio2")
    End With

    With sh1
        'metto un riferimento ai Range da copiare
        Set rng = Union(.Range("A1:A10"), .Range("C1:C10"))
    End With
    With rng
        'copio da un foglio all'altro
        .Areas(1).Copy
        sh2.Range("H10").PasteSpecial xlPasteValues
        .Areas(2).Copy
        sh2.Range("C5").PasteSpecial xlPasteValues
    End With
    Application.CutCopyMode = False
     
    'Set a Nothing delle variabili oggetto
    Set rng = Nothing
    Set sh2 = Nothing
    Set sh1 = Nothing

End Sub

10 - Copia/incolla la formattazione(non il valore) della cella A1 del Foglio1 nella cella A1 del Foglio2. (top)
Viene copiata solo la formattazione(non il valore o le formattazioni di riga e colonna). Nell'esempio viene copiata la formattazione della cella A1 del Foglio1 nella cella A1 del Foglio2. Codice da copia/incollare in un modulo standard.

Public Sub m()

    'dichiaro le variabili
    Dim sh1 As Worksheet
    Dim sh2 As Worksheet

    'metto un riferimento ai due fogli
    With ThisWorkbook
        Set sh1 = .Worksheets("Foglio1")
        Set sh2 = .Worksheets("Foglio2")
    End With

    With sh1
        'copio la formattazione da un foglio all'altro
        .Range("A1").Copy
        sh2.Range("A1").PasteSpecial xlPasteFormats
    End With
     
    'Set a Nothing delle variabili oggetto
    Set sh2 = Nothing
    Set sh1 = Nothing

End Sub

11 - Copia/incolla la formattazione(non il valore) del Range A1:C10 del Foglio1 sul Foglio2 a partire dalla cella A1. (top)
Viene copiata solo la formattazione(non il valore o le formattazioni di riga e colonna). Nell'esempio viene copiata la formattazione delle celle A1:C10 del Foglio1 sul Foglio2 a partire dalla cella A1.  Codice da copia/incollare in un modulo standard.

Public Sub m()

    'dichiaro le variabili
    Dim sh1 As Worksheet
    Dim sh2 As Worksheet

    'metto un riferimento ai due fogli
    With ThisWorkbook
        Set sh1 = .Worksheets("Foglio1")
        Set sh2 = .Worksheets("Foglio2")
    End With

    With sh1
        'copio la formattazione da un foglio all'altro
        .Range("A1:C10").Copy
        sh2.Range("A1").PasteSpecial xlPasteFormats
    End With
     
    'Set a Nothing delle variabili oggetto
    Set sh2 = Nothing
    Set sh1 = Nothing

End Sub

Per ulteriori informazioni su Microsoft Excel ed il suo Visual Basic, utilizzate questo forum:
http://social.answers.microsoft.com/Forums/it-IT/officeexcelit/threads


Ultimo aggiornamento di questa pagina: 21/02/2011 - mauro gamberini