Metti il codice qui sotto in un modulo standard e poi lancialo.
I tuoi files .xls/.xlsx/ecc. devono trovarso in una cartella definita, nell'esempio è C:\tuaCartella.
Modifica la path(occhio alla \ finale) secondo le tue esigenze. La routine non controlla il tipo dei file presenti nella directory, quindi vorrebbero *solo* file di Excel. E' possibile però discriminare il tipo di files all'occorrenza.
Metto anche la routine m() che ti mostra come utilizzare mModifica(). E qui:
http://www.maurogsc.eu/esempiforum10/sostituisciparola.zip
fra qualche minuto trovi il file utilizzato per l'esempio.
Se hai dubbi, chiedi sempre in questo thread.
Grazie per l'attenzione ed ecco il codice:
'routine che chiama mModifica()
Public Sub m()
'chiamata alla routine passando
'tre parametri:
'path della Directory
'valore da modificare
'nuovo valore
Call mModifica("C:\tuaCartella", _
"Pluto", _
"Topolino")
End Sub
'la routine si aspetta tre parametri:
'path della Directory
'valore da modificare
'nuovo valore
Public Sub mModifica(ByVal sPath As String, _
ByVal sValoreVecchio As String, _
ByVal sValoreNuovo As String)
'gestione errori
On Error GoTo RigaErrore
'dichiaro le variabili
Dim objFSO As Object
Dim objFolder As Object
Dim objFile As Object
Dim objExcel As Object
Dim objWorkbook As Object
Dim objWorksheet As Object
Dim c As Range
'creo un oggetto FSO
Set objFSO = CreateObject("Scripting.FileSystemObject")
'metto un riferimento alla directory
'se la Directory esiste:
If objFSO.FolderExists(sPath) Then
Set objFolder = objFSO.GetFolder(sPath)
'creo un oggetto Excel
Set objExcel = CreateObject("Excel.Application")
'per ogni file nella cartella
For Each objFile In objFolder.Files
'metto un riferimento al file
Set objWorkbook = objExcel.Workbooks.Open(objFile.Path)
'ciclo i fogli del file
For Each objWorksheet In objWorkbook.Worksheets
'ciclo il range con valori
With objWorksheet
For Each c In .UsedRange
If c.Value = sValoreVecchio Then
c.Value = sValoreNuovo
End If
Next
End With
Next
'salvo e chiudo il file
objWorkbook.Save
objWorkbook.Close
Next
'MsgBox di fine sostituzioni
MsgBox "Sostituzioni eseguite."
'se la Directory non esiste
Else
MsgBox "Path della Directory errata."
End If
'riga sempre eseguita
RigaChiusura:
'se creato, faccio il quit di Excel
If Not objExcel Is Nothing Then
objExcel.Quit
End If
'Set a Nothing delle variabili oggetto
Set objWorksheet = Nothing
Set objWorkbook = Nothing
Set objExcel = Nothing
Set objFolder = Nothing
Set objFSO = Nothing
Exit Sub
'in caso di errore
RigaErrore:
MsgBox Err.Number & vbNewLine & Err.Description
Resume RigaChiusura
End Sub
Mauro Gamberini - Microsoft MVP(Excel) - http://www.maurogsc.eu/