¿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