Copiare Fogli da un'altra cartella.xls. - dal 04/09/04 pagina vista: volte

Parliamo ancora di Fogli di lavoro. Questa volta di occupiamo della copia di un foglio da un'altra cartella, che potrà anche essere chiusa ma di cui si conosca il percorso esatto, nella cartella attiva.

Per copiare un Foglio si usa il metodo Copy che deve prevedere, parlando di fogli, in quale posizione questo dovrà essere incollato (rispetto ai fogli esistenti) nella cartella di destinazione (che potrà essere quella attiva, oppure un'altra cartella ancora, anch'essa aperta). Sono previste due posizioni:

  • Before  - prima di un determinato foglio (per esempio: prima del Foglio2)

  • After  -  dopo un determinato foglio (per esempio: dopo ill Foglio2)

Le istruzioni sono semplici, e abbastanza brevi. Vediamo le due situazioni: per prima la copia di un foglio da una cartella ad un'altre, con tutte e due le cartelle aperte:

sarà opportuno inserire la routine nella cartella ricevente, quella in quel momento attiva :

Workbooks("CartellaOrigine.xls").Sheets("Dettaglio formule").Copy _
After:=Workbooks("Destinazione.xls").Sheets("Foglio3")

l'istruzione Copia il foglio "Dettaglio formule" che si trova nella cartella "CartellaOrigine.xls" e lo replica (lo incolla) nella cartella "Destinazione" (quella da cui si lancia la macro) DOPO il Foglio3.

Ora vediamo la copia di un foglio proveniente da una cartella chiusa. Poichè non è possibile "prendere" (copiare) un "oggetto" da una cartella se non è aperta (e un Foglio è un "oggetto" del Workbook), usiamo un'istruzione che apra la cartella chiusa, gli si fa copiare il Foglio che ci interessa, e richiudiamo la cartella di provenienza. Queste le istruzioni:

 X = "C:\Documenti\CartellaOrigine.xls" 'con X prendiamo tutto il percorso che mira alla cartella chiusa
Workbooks.Open Filename:=X, ReadOnly:=False 
 
'apriamo la cartella di origine
Y = Mid(X, 13) 
'con Y otteniamo, estratto con Mid, solo il nome della cartella "CartellaOrigine.xls"
Workbooks(Y).Sheets("Dettaglio formule").Copy _
After:=Workbooks("Destinazione.xls").Sheets("Foglio3")
'usiamo quindi Y al posto del nome della cartella

Workbooks(Y).Close
 ' e quindi si chiude la cartella Y (cioè la cartella di origine)

 

Per copiare un Foglio all'interno della stessa cartella, invece, va bene questa istruzione:

Worksheets("Foglio1").Copy After:=Worksheets("Foglio3")

mentre per spostarlo, bisogna usare il metodo Move, così:

Worksheets("Foglio1").Move After:=Worksheets("Foglio3")

 

Buon lavoro.

prelevato sul sito www.ennius.altervista.org