Tengo varios archivos de una solo hoja, ¿Cómo puedo abrir esos archivos en un solo libro?

pues tengo varios archivos .XLSX y son de una solo hoja y abrir uno por uno para correr un macro y después imprimir sale muy tedioso, entonces Excel tiene la opción de imprimir todo el libro, entonces lo que deseo es abrir cada uno de esos archivos en una hoja independientemente hacer correr la macro en cada hoja y después mandar a imprimir TODO el libro, para reducir tiempo - de ante mano muchas gracias por su respuesta...

1 respuesta

Respuesta
1

Para lograr lo que quieres existen dos modos:

En el primero se copian las hojas individuales a un libro consolidado, teniendo al final un solo archivo con varias hojas, existe la limitante de que puede volverse muy pesado el archivo y dificultar su manejo y proceso.

En el segundo modo, se abre cada uno de los archivos, se corre un proceso (macro) y se imprime (en formato PDF, por ejemplo)... prefiero este último ya que solo representa la desventaja de los archivos siguen estando separados.

Dependiendo de cual sea tu caso, ampliare mi respuesta.

pues vayamos por el segundo método... pues ya tengo una macro creada y se tiene que usar en cada archivo, PERO abir-macro-imprimir por cada archivo es pesado (son un promedio de 100 archivos .xlsx de una solo hoja), lo que deseo es hacer todo esto en un solo paso... y en eso necesito ayuda.

Te dejo el código que abre cada uno de los archivos Excel en la carpeta del archivo elegido

Sub CadaArchivo()
''Creada por FSerranoen 120410
''Para rayearth07 en TodoExpertos.com
''Abre y cierra cada uno de los archivos excel en la carpeta del archivo elegido
'Captura la dirección del archivo elegido
ruta = Application.GetOpenFilename
'Determina la ruta del archivo elegido
ruta = Mid(ruta,1,InStrRev(ruta,"\"))
'Cambia el directorio actual y el nombre del primer archivo
ChDir (ruta): archivo = Dir(ruta)
'Inicio del Ciclo
While archivo <> "" And Application.WorksheetFunction.IsNumber(InStr(1, archivo, ".xl"))
    'Abre el archivo actual
    Workbooks.Open (archivo)
    'En este punto se puede implementar el llamado a otra macro
    Call macro_usuario
    Call imprimir
    'Cierra el archivo actual sin guardar los cambios
    ActiveWorkbook.Close savechange = False
    'carga el nombre del siguiente archivo para reiniciar el ciclo
    archivo = Dir
Wend
'Fin del ciclo
End Sub

Debes reemplazar en la línea Call macro_usuario el texto resaltado por el nombre de la macro que quieres correr en cada archivo, y el código para 'imprimir' (generar un PDF) es este:

Sub imprimir()
ActiveSheet.ExportAsFixedFormatType:=xlTypePDF,Filename:=_
ruta & Mid(ActiveWorkbook.Name,1,InStrRev(ActiveWorkbook.Name,".")-1) & ".pdf",Quality:= _
xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _
OpenAfterPublish:=False
End Sub

Ya con esto, podrías avanzar en tu proceso. Quedo pendiente de tu caso. Saludos

Para poder agilizar el proceso puede deshabilitar la actualización de la pantalla incluyendo esta linea

Application.ScreenUpdating=False

Al principio del código principal; puedes encontrar mayor información sobre como mejorar el desempeño de las macros en este link

No olvides finalizar y puntuar la pregunta

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas