Copiare fogli di lavoro in una macro

Quando si organizzano i dati nelle cartelle di lavoro, non è raro copiare fogli di lavoro da una cartella di lavoro a un’altra. In effetti, il comando Sposta o copia (visibile quando fai clic con il pulsante destro del mouse su una scheda del foglio di lavoro) è uno che uso abbastanza spesso e sarei disposto a scommettere che altri lo usano altrettanto spesso.

Come si possono quindi copiare i fogli di lavoro all’interno di una macro? La risposta è utilizzare il metodo Copy con un singolo foglio di lavoro o un gruppo di fogli di lavoro. Ad esempio, il seguente codice macro copierà il foglio di lavoro attualmente selezionato in una nuova cartella di lavoro:

ActiveSheet.Copy

 

Questo è tutto; una singola riga è tutto ciò che è necessario per copiare il foglio di lavoro in una nuova cartella di lavoro senza nome. Dopo aver eseguito la riga, la nuova cartella di lavoro viene selezionata ed è possibile salvarla utilizzando un codice simile al seguente. La prima riga del codice salva la cartella di lavoro e la seconda la chiude.

Questo contenuto è riservato agli abbonati

Solo gli utenti con Abbonamento VBA Coder oppure Ultimate possono visionarlo.

Se sei già abbonato Accedi per sbloccare il contenuto!

In caso contrario abbonati qui! L'abbonamento è conveniente.

E puoi interromperlo in ogni momento e in completa autonomia.

ABBONATI

(puoi renderti conto di quanti siano i contenuti riservati

raggiungendo questa pagina)

 

Se vuoi copiare un foglio specifico in un’altra cartella di lavoro, lo fai specificando il nome del foglio che vuoi copiare, invece di usare l’oggetto ActiveSheet:

 

Sheets("Foglio1").Copy

 

Questo esempio copia il foglio di lavoro denominato Foglio1, dalla collezione Sheets, in una nuova cartella di lavoro. È quindi possibile salvare la nuova cartella di lavoro, come già discusso.

Il metodo Copy, se utilizzato con i fogli di lavoro, non si limita alla copia di un singolo foglio alla volta. Se hai selezionato un gruppo di fogli, puoi comunque utilizzare un’unica riga di comando per copiarli tutti in una nuova cartella di lavoro. Questo è ciò che viene fatto in questa macro:

Questo contenuto è riservato agli abbonati

Solo gli utenti con Abbonamento VBA Coder oppure Ultimate possono visionarlo.

Se sei già abbonato Accedi per sbloccare il contenuto!

In caso contrario abbonati qui! L'abbonamento è conveniente.

E puoi interromperlo in ogni momento e in completa autonomia.

ABBONATI

(puoi renderti conto di quanti siano i contenuti riservati

raggiungendo questa pagina)

 

Si noti l’uso del comando Copy. La macro funzionerà se hai selezionato un foglio di lavoro o cinquanta; non importa. Se si desidera copiare tutti i fogli di lavoro da una cartella di lavoro a un’altra, è sufficiente apportare una singola modifica nella macro, alla riga in cui viene richiamato il metodo Copy:

 

Sheets.Copy

 

In questo modo viene copiata l’intera collezione Sheets, costituita da tutti i fogli di lavoro nella cartella di lavoro.

Va notato che il metodo Copy non è solo per copiare fogli di lavoro in una nuova cartella di lavoro; può anche essere utilizzato per copiare fogli di lavoro all’interno della stessa cartella di lavoro. L’unica cosa che devi fare è specificare dove, nella cartella di lavoro corrente, vuoi fare la copia:

 

ActiveSheet.Copy After:=Sheets("Foglio7")

 

Questa riga di codice copia il foglio di lavoro attivo nella stessa cartella di lavoro in modo che venga visualizzato dopo il foglio di lavoro denominato Foglio7. Se è più appropriato per le tue esigenze, potresti invece specificare il foglio di lavoro prima del quale posizionare la copia:

 

ActiveSheet.Copy Before:=Sheets("Foglio7")

 

Ciò comporta che il foglio di lavoro venga posizionato prima di Foglio7 anziché dopo.

Tags: , , , , , , , , , ,

Ti è stato utile?