- Abre Microsoft Excel.
- Presiona Alt + F11 para abrir el editor de VBA.
- En el editor de VBA, haz clic en Insertar > Módulo.
- Copia y pega el siguiente código en el módulo:
Sub CombinarHojasDeArchivos()
Dim RutaCarpeta As String
Dim Archivo As String
Dim LibroOrigen As Workbook
Dim LibroDestino As Workbook
Dim Hoja As Worksheet
Dim NombreHoja As String
Dim NuevoNombreHoja As String
Dim Contador As Integer
' Definir la carpeta donde están los archivos
RutaCarpeta = "D:\bbb\"
If Right(RutaCarpeta, 1) <> "\" Then RutaCarpeta = RutaCarpeta & "\"
' Crear un nuevo libro para combinar
Set LibroDestino = Workbooks.Add
' Iterar sobre todos los archivos .xlsx en la carpeta
Archivo = Dir(RutaCarpeta & "*.xlsx")
Do While Archivo <> ""
' Abrir cada archivo
Set LibroOrigen = Workbooks.Open(RutaCarpeta & Archivo)
' Copiar cada hoja al libro destino
For Each Hoja In LibroOrigen.Sheets
Hoja.Copy After:=LibroDestino.Sheets(LibroDestino.Sheets.Count)
' Usar el nombre original de la hoja
NombreHoja = Hoja.Name
NuevoNombreHoja = NombreHoja
Contador = 1
' Verificar si ya existe una hoja con el mismo nombre en el libro destino
Do While HojaExiste(LibroDestino, NuevoNombreHoja)
NuevoNombreHoja = Left(NombreHoja, 28) & "_" & Contador
Contador = Contador + 1
Loop
' Renombrar la hoja
LibroDestino.Sheets(LibroDestino.Sheets.Count).Name = NuevoNombreHoja
Next Hoja
' Cerrar el archivo origen
LibroOrigen.Close False
Archivo = Dir
Loop
' Guardar el archivo combinado
On Error Resume Next
LibroDestino.SaveAs RutaCarpeta & "_juntos-Rostov.xlsx"
MsgBox "Archivos combinados exitosamente en: " & RutaCarpeta & "_juntos-Rostov.xlsx"
End Sub
Function HojaExiste(Libro As Workbook, Nombre As String) As Boolean
Dim Hoja As Worksheet
On Error Resume Next
Set Hoja = Libro.Sheets(Nombre)
HojaExiste = Not Hoja Is Nothing
On Error GoTo 0
End Function
- Presiona Alt + Q para cerrar el editor de VBA y regresar a Excel.
- Presiona Alt + F8 para abrir la ventana de macros.
- Selecciona la macro llamada
CombinarHojasDeArchivos
y haz clic en Ejecutar.