¿CómoUnir las hojas de varios libros que sean copiadas exactamente igual en un nuevo libro con el mismo diseño y nombre de hojas

Estoy intentando utilizar una macro publicada en otra consulta (la pego al final de la consulta), pero no me ofrece el resultado deseado.

Le cuento, dentro de una carpeta que tengo en el Escritorio hay una serie de libros Excel .xlsx (un número sin determinar ya que a veces son 50 y otras veces son 180 libros o más con distintos nombres) que a su vez tienen una serie de hojas (un número sin determinar ya que pueden ir de 2 a 20 hojas con distintos nombres). Los datos siempre comienzan en la celda A1 y la fila de títulos es la primera.

Desearía una macro para incorporar a un libro habilitado para macros que, al ejecutar la macro, creara un único libro en la misma carpeta del Escritorio donde se trasladen los datos de todas las hojas de los libros (las hojas de estos libros sean copiadas exactamente igual a un nuevo libro con el mismo diseño y nombre de hojas), con dos opciones a elegir al ejecutar la macro:

1.-Copiar los datos de todos los libros cuyas hojas origen se llamen AnalisisPrevio y pegar en una única hoja destino con el nombre AnalisisPrevioTotal del nuevo libro, de forma que la hoja origen del primer libro pegue la fila de títulos que siempre está en la primera fila, y el resto de datos de las n hojas origen a continuación de la última fila de los sucesivos listados, pero sin traer las filas de títulos. Dando opción al usuario si desea cambiar el nombre de la hoja origen a copiar.

ó

2.-Copiar los datos de las distintas hojas de todos los libros origen, y pegue en un único libro destino con el mismo número y nombre de hojas. Al igual que en la primera opción, que pegue la fila de títulos solo una vez.

En ambos casos a ver si la macro puede dar opción de preguntar al usuario donde quiere guardar el nuevo libro, por defecto que salga la carpeta origen donde están todos los libros origen y el nombre del nuevo libro debería ser EstudioTotal, aunque con posibilidad de modificar el nombre del libro si el usuario lo desea.

Por último, que no sea necesario abrir todos los libros origen contenidos en la misma carpeta para ejecutar la macro.

Sub UnirLibros()

Dim sh As Object

Application.DisplayAlerts = False

'el nombre del libro actual, con la macro

libro1 = ActiveWorkbook.Name

'tomo como ruta la del libro activo

ruta = ActiveWorkbook.Path

ChDir ruta & "\"

'revisar la extensión de los libros a unir

archi = Dir(ruta & "\*.xls*")

Do While archi <> libro1 And archi <> ""

Workbooks.Open archi

'nombre del libro que se abrió

libro2 = ActiveWorkbook.Name

For Each sh In ActiveWorkbook.Sheets

'coloco el fin de rango de la hoja 1 del libro destino en una variable para ajustarla a criterio

'aquí se evalua la col A de la hoja 1

finx = Workbooks(libro1).Sheets(1).Range("A" & Rows.Count).End(xlUp).Row + 1

'copio rango de cada hoja

sh.Range("A1").CurrentRegion.Copy Destination:=Workbooks(libro1).Sheets(1).Range("A" & finx)

Next

'cierra el libro y procede a buscar el siguiente

Workbooks(libro2).Close False

archi = Dir()

Loop

MsgBox "Fin del proceso"

End Sub

Añade tu respuesta

Haz clic para o