Allora...
Cominciamo con l' elenco dei file da modificare; avendo tu excel 2007 non possiamo usare FileSearch, quindi lo facciamo con attrib:
-apri una finestra di dos
-usa il comando CD per andare alla cartella che contiene le sottocartelle con i vari file; la cosa piu' semplice potrebbe essere scrivere direttamente il path completo, es CD C:\Documents and Settings\Utentexx\Documenti\Directory_A
-quindi lancia il comando "ATTRIB dest*.xls /s >C:\pippo123.txt" (senza apici)
-apri il file C:\pippo123.txt e controlla che contenga qualcosa che somigli effettivamente al path completo + nome dei tuoi files
-vai sul file che contiene il foglio da copiare, inserisci un nuovo foglio e chiamalo "attrib", importa da A1 il contenuto del file pippo123.txt. Procedura:
>seleziona A1
>Menu /Dati /Importa dati esterni /Importa dati
>scegli Tipo file=txt e vai a scegliere in C: il file pippo123.txt; premi Apri
>scegliere Larghezza fissa, Avanti
>togliere eventuali separatori di colonna gia' presenti nell' anteprima dati (sono delle linee verticali sovrapposte al testo, fare doppioclick per cancellarle), e inserirne 1 solo subito prima di c:\ (fare click per inserire)
>premere Fine
-in questo modo avrai in col B, da B1, tutti i file che sono da manipolare; se prima, sul txt, hai fatto una verifica di verosimiglianza qui fai una verifica approfondita che ci siano tutti e non ci siano file estranei, perche' la macro lavorera' su questo elenco. Se c' e' qualche file che vuoi togliere basta eliminare tutta la riga, lasciando l' elenco senza vuoti intermedi. Se VUOI FARE UN TEST PRELIMINARE, ad esempio, basta lasciare in questo elenco solo pochi files.
-inserisci questa macro su un Modulo di codice:
- Codice: Seleziona tutto
Sub GodSaveAntom()
Dim CopySh As String, CopiedSh As String, NextName As String, StWB As String
Dim FlEx As Integer
CopySh = "Foglio3" '<<< Il foglio che deve essere replicato
CopiedSh = "Foglio11" '<<< Come sara' chiamato il foglio copiato
StWB = ThisWorkbook.Name
'
Sheets(CopySh).Select: I = 0
'
Do
Windows(StWB).Activate
Sheets(CopySh).Select
NextName = Sheets("attrib").Range("B1").Offset(I, 0).Value
If NextName = "" Then GoTo Exita
Application.DisplayAlerts = False
Workbooks.Open Filename:=NextName, UpdateLinks:=0
OWb = ActiveWorkbook.Name
FlEx = 0
'Check se nome foglio gia' esiste; se SI cancella il contenuto
' se NO lo crea
For W = 1 To ActiveWorkbook.Worksheets.Count
If Sheets(W).Name = CopiedSh Then
Sheets(W).Select
' Sheets(W).Copy After:=Worksheets(Worksheets.Count) '<<<< NOTA ***
' Sheets(W).Select '<<<< NOTA ***
Cells.Clear: FlEx = 1: Exit For
End If
Next W
If FlEx = 0 Then
Worksheets.Add After:=Worksheets(Worksheets.Count)
ActiveSheet.Name = CopiedSh
End If
Workbooks(StWB).Sheets(CopySh).Cells.Copy _
Destination:=Range("A1")
K = 0
Set FCella = Cells.Find(StWB, LookIn:=xlFormulas)
If Not FCella Is Nothing Then
Do
K = K + 1
FCella.Replace What:=("[" & StWB & "]"), Replacement:="", LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:=False
Set FCella = Cells.FindNext(FCella)
Loop While Not FCella Is Nothing
End If
Workbooks(OWb).Close SaveChanges:=True
Sheets("attrib").Range("B1").Offset(I, 1).Value = FlEx 'Flag Exist
Sheets("attrib").Range("B1").Offset(I, 2).Value = K 'N° di replace
I = I + 1
Loop
Exita:
End Sub
Guarda le due istruzioni marcate <<<, che specificano quale foglio deve essere copiato dal file corrente e come sara' chiamato sul file di destinazione.
Fai il backup di tutti i file:
-le tecniche sono tante, potrebbe essere sufficiente creare una directory di servizio e da Windows explorer copiarvi tutta la directory dei documenti con le sue sottodirectories.
-ricorda che il backup e' l' unico modo per proteggere i dati
Quando sei pronta, lancia la macro.
Questa il primo file presente nell' elenco del foglio attrib, verifica se esiste gia' un foglio col nome del foglio che vogliamo inserire; se c' e' lo CANCELLA TUTTO (Nota **), se non c' e' lo crea; poi copia il foglio definito tramite CopySh, modifica le formule, chiude salvando le modifiche.
Ripete per ogni file fino a trovare un "vuoto" nell' elenco.
Nota**: in alternativa e' possibile creare una copia di questo foglio; basta scommentare le due istruzioni che nel listato sono marcate <<<< NOTA ***
A scopo di report, sul foglio attrib, accanto a ogni nome file viene segnato se il foglio esisteva gia' (1 in col C) e quante formule sono state modificate (ovviamente dovrebbe essere uguale su tutti i file).
Raccomando ancora una volta il backup dei dati.
E.. in bocca al lupo.