Benvenuto Ospite Cerca | Topic Attivi | Utenti | | Log In | Registra

[Excel 2007]- Copiare fogli in altri file Opzioni
aetio
Inviato: Wednesday, October 20, 2010 11:14:00 PM

Rank: AiutAmico

Iscritto dal : 5/10/2010
Posts: 723
Ciao,
devo copiare un foglio di un file (nominiamo il file "madre" e il foglio "padre1") in altri file (che nominiamo rispettivamente "figlio1", "figlio2" "figlio3" e "figlio4" etc. il problema è che sono 26 file :)))... ) previa cancellazione del "vecchio" foglio "padre1" presente nei file. Ho registrato una macro che:

Sub copia_foglio()
Windows("figlio2.xlsm").Activate
Sheets("padre1").Select
ActiveWindow.SelectedSheets.Delete
Windows("figlio3.xlsm").Activate
Sheets("padre1").Select
ActiveWindow.SelectedSheets.Delete
Windows("figlio4.xlsm").Activate
Sheets("padre1").Select
ActiveWindow.SelectedSheets.Delete
Windows("madre1.xlsm").Activate
Sheets("padre1").Copy Before:=Workbooks("figlio2.xlsm").Sheets(1)
Windows("madre1.xlsm").Activate
Sheets("padre1").Copy Before:=Workbooks("figlio3.xlsm").Sheets(1)
Windows("madre1.xlsm").Activate
Sheets("padre1").Copy Before:=Workbooks("figlio4.xlsm").Sheets(1)
Windows("madre1.xlsm").Activate
End Sub

Penso che questa però sia la solita macro macchinosa e pesante, di quelle che non mi piacciono affatto, mentre vi è la possibilità di standardizzare l'operazione il modo leggero, sintetico, preciso e quindi meno stressante per la macchina... Ho ragione vero?? :)))
Grazie assai e buona notte,
eZio
Sponsor
Inviato: Wednesday, October 20, 2010 11:14:00 PM

 
a10n11
Inviato: Thursday, October 21, 2010 7:29:56 PM

Rank: AiutAmico

Iscritto dal : 5/29/2003
Posts: 1,694
salve
una maniera più spiccia per aprire uno alla volta i file da modificare (supponendo che si trovino tutti nella stessa directory - Madre compresa)
La seguente macro va scritta nel File MADRE che ovviamente sarà l'unico file aperto.
La macro analizza tutti i file contenuti nella directory del file aperto (MAdre) controlla che i primi sei caratteri del nome dei file che si vogliono modificare contengano la voce "Figlio". Quando trova il primo, lo apre, lo modifica cancella il foglio "Padre1" e lo sostituisce con lo stesso del file "Madre" lo salva e lo chiude passando a processare i successivi file presenti nella directory.


Sub apriEcambia()
miapath = ActiveWorkbook.Path
Set wb = ActiveWorkbook
Set sH = wb.Sheets("Padre1")
ChDir miapath
F = Dir(miapath & "\*.xlsm")
If F = "" Then Exit Sub
Application.DisplayAlerts = False
While F <> ""
If Left(F, 6) = "figlio" Then
Workbooks.Open Filename:=F
With ActiveWorkbook
.Sheets("Padre1").Delete
sH.Copy BEFORE:=.Worksheets("Foglio2")
.Save
.Close
End With
End If
F = Dir
Wend
Application.DisplayAlerts = True
End Sub


saluti
Giap

aetio
Inviato: Saturday, October 23, 2010 5:32:11 PM

Rank: AiutAmico

Iscritto dal : 5/10/2010
Posts: 723
Ciao,
innanzi tutto scusa per il ritardo nel rispondere, ma ho avuto una trasferta imprevista che mi ha tenuto lontano dalle mie tabelle... e ti confesso che un pò mi mancavano...loro e le tue macro :))))))
Anche stavolta hai fatto centro! E chi ne dubitava?!?
Grazie assai e buona serata,
eZio
Utenti presenti in questo topic
Guest


Salta al Forum
Aggiunta nuovi Topic disabilitata in questo forum.
Risposte disabilitate in questo forum.
Eliminazione tuoi Post disabilitata in questo forum.
Modifica dei tuoi post disabilitata in questo forum.
Creazione Sondaggi disabilitata in questo forum.
Voto ai sondaggi disabilitato in questo forum.

Main Forum RSS : RSS

Aiutamici Theme
Powered by Yet Another Forum.net versione 1.9.1.8 (NET v2.0) - 3/29/2008
Copyright © 2003-2008 Yet Another Forum.net. All rights reserved.