Macro en excel para salvar datos una vez actualizados

Buenos días, A ver si me podéis ayudar pues soy muy novato en macros Excel.
Tengo una macro que abre todos los archivos Excel de la carpeta actual que empiecen por mod* y los mete cada uno en una pestaña y reemplaza unos textos en cada uno de ellos. Lo que me gustaría es que una vez acabe los replaces, salve cada libro. Lo he intentado con la línea Workbooks(otro).SaveAs Filename:="-1" & archi pero me salva el libro pero sin reflejar los cambios echos por los replaces, es decir, en pantalla si que veo que ha reemplazado bien pero al salvarlo es como si me salvase la versión inicial antes de reemplazar.
Muchas gracias


Sub abrir()
Dim hoja As Object
Dim libro As Workbook
Dim fileSaveName As Variant
Application.DisplayAlerts = False
mio = ActiveWorkbook.Name
ruta = ActiveWorkbook.Path
ChDir ruta & "\"
archi = Dir("mod*.xls*")
Do While archi <> ""
Workbooks.Open archi
otro = ActiveWorkbook.Name
For Each hoja In ActiveWorkbook.Sheets
hoja.Copy After:=Workbooks(mio).Sheets(Workbooks(mio).Sheets.Count)
Cells.Select
Selection.Replace What:="FHFECHA", Replacement:="meamea", LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
Selection.Replace What:="FECHEXTR", Replacement:="cacaca", LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
Next
Workbooks(otro).SaveAs Filename:="-1" & archi
archi = Dir()
Loop
End Sub

1 Respuesta

Respuesta
1

La macro hace esto, por ejemplo, di tuvieras un libor llamado "modx":

- Abre libro modx

- Copia la hoja1 de modx en tu libro

- La hoja nueva en tu libro es a la que le hace los replace

Ahora, pregunta, ¿en dónde quieres los replace en la hoja de tu libro o en la hoja del archivo modx?

Si quieres que los cambios del replace se hagan en las hojas del libro modx, entonces utiliza esta macro

Sub abrir()
Dim hoja As Object
Dim libro As Workbook
Dim fileSaveName As Variant
Application.DisplayAlerts = False
mio = ActiveWorkbook.Name
ruta = ActiveWorkbook.Path
ChDir ruta & "\"
archi = Dir("*.xls*")
Do While archi <> ""
    Workbooks.Open archi
    otro = ActiveWorkbook.Name
    For Each hoja In ActiveWorkbook.Sheets
        hoja.Copy After:=Workbooks(mio).Sheets(Workbooks(mio).Sheets.Count)
        Workbooks(otro).Activate
        hoja.Select
        Cells.Select
        Selection.Replace What:="FHFECHA", Replacement:="meamea", LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
        Selection.Replace What:="FECHEXTR", Replacement:="cacaca", LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
    Next
    Workbooks(otro).SaveAs Filename:="-1" & archi
    Workbooks(otro).Close
    archi = Dir()
Loop
End Sub   

Para guardar el archivo mox, si quieres que tenga el mismo nombre, simplemente cambia

esta línea

Workbooks(otro).SaveAs Filename:="-1" & archi

Por esta

Workbooks(otro). Save

Prueba y me comentas
Saludos. DAM
Si es lo que necesitas.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas