Buenos dias, tengo un conjunto de archivos que quiero actualizar. Basicamente todos los meses debo entrar uno por uno y correr la ultima columna para que me traiga informacion del mes actualizado. Me interesa crear una macro donde a travez de un bucle, recorra el listado de archivos y realice ese proceso sin necesidad de abrirlos uno por uno.
Comencé haciendo esto:
Sub Actualizar()
'
Dim SelectArchivo As String
Dim ParaActualizar As Workbook
Range("A2").Select
SelectArchivo = ActiveCell.Value
'Esta linea evita que parpadee la pantalla, por los procesos de cambio de hoja
Application.ScreenUpdating = False
'Abre el libro fuente
Workbooks.Open Filename:=ParaActualizar
'A partir de esta linea se inicia un procesos repetitivo denomidado BUCLE, el mismo se repetira hasta
'que la variable de un valor en BLANCO
Do While SelectArchivo <> ""
Sheets("Selección").Select
NombreArchivo = Dir("C:\Users\u161280\Desktop\Prueba")
'Seleciona una hoja y un rango
Sheets("Hoja1").Select
Selection.End(xlToRight).Select
Range(Selection, Selection.End(xlDown)).Select
Range(Selection, ActiveCell.SpecialCells(xlLastCell)).Select
Range(Selection, Selection.End(xlDown)).Select
Selection.AutoFill Destination:=Columns("D:E"), Type:=xlFillDefault
Columns("D:E").Select
Columns("E:E").Select
Calculate
Range("E1").Select
ActiveWorkbook.Save
ActiveWorkbook.Close
Loop
End Sub
Tengo problema con Workbooks.Open Filename:=ParaActualizar, me dice "Variable de objeto o bloque with no establecido"
Los archivos son:
ParaActualizar ---> Excel donde pondré el listado de archivos que debe buscar y actualizar
Excel1, Excel 2 y Excel 3 son los archivos que debe correr la formula y guardarlo.
He utilizado esto a modo de ejemplo, ya que los archivos originales tienen nombres mas largos y una vez que entienda el proceso lo replicaré modificando los datos.
Muchas gracias!!
has declarado tu variable ParaActualizar como tipo Workbook
sin embargo, al abrir el libro lo utilizas como si fuese la ruta del archivo
Workbooks.Open Filename:=ParaActualizar
por eso te da el error, porque está esperando una ruta de archivo
dices que ParaActualizar es un libro donde tienes el listado de archivos a abrir
¿cómo abres ese libro?¿en qué momento lo abres?¿está abierto ya al iniciar la macro?
Suponiendo que ya esté abierto, imagino que tendrás un rango con los nombres de los archivos que quieres abrir, ese será el rango por el que tendrás que hacer un bucle.
Dim LibroQueVoyAProcesar As Workbook
Dim miceldaconrutaaarchivo As Range
For Each miceldaconrutaaarchivo In rangoconnombresdelibros.Cells 'este rango lo tendrás que establecer antes
'abrimos el libro
Set LibroQueVoyAProcesar = Application.Workbooks.Open(Filename:=miceldaconrutaaarchivo.Value)
' ya lo tienes abierto
' aquí haces lo que quieras con ese libro
LibroQueVoyAProcesar.Close
Next
'terminamos
Set LibroQueVoyAProcesar = Nothing
------
Ya sé Excel, pero necesito más.
Gracias Paco, voy a probar lo que me indicas.
Si, tendre el libro ParaActualizar abierto y sera a traves de ese que actualice el resto de libros.
Gracias!
Ya he podido lograr que mi macro navegue mediante un bucle el listado de archivos, los trabaje y vuelva a cerrar.
Ahora tengo un pequeño problema con lo que debe hacer dentro de cada archivo, que es:
IR A LA ULTIMA COLUMNA CON DATOS, COPIAR TODO Y CORRERLO UNA COLUMNA MAS.
Por ejemplo mi ultima columna con informacion es Abril 2019, y para abajo tiene 10 filas con formulas. Lo que necesito es que "AutoFill Destination" tenga un rango variable, para por ejemplo la primera vez correr la formula y que sea Mayo 2019, en el mes siguiente Junio 2019 y asi sucesivamente.
El problema es que no se como definir ese rango variable.