Instrucciones para combinar todas las hojas de múltiples archivos Excel
Pasos para configurar y ejecutar la macro
- 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.
Resultado esperado
- La macro buscará todos los archivos
.xlsx
en la carpeta D:\bbb
.
- Copiará todas las hojas de cada archivo en un nuevo archivo combinado llamado
_juntos-Rostov.xlsx
en la misma carpeta.
- Cada hoja en el archivo combinado conservará el mismo nombre que tenía en su archivo de origen.
- Si hay conflictos de nombres, la macro añadirá un sufijo numérico (
_1
, _2
, etc.) para garantizar nombres únicos.
Notas
- Asegúrate de que todos los archivos Excel estén cerrados antes de ejecutar la macro.
- Si necesitas cambiar la carpeta de búsqueda, edita la línea
RutaCarpeta = "D:\bbb\"
con la ruta deseada.
- La macro solo procesará archivos con extensión
.xlsx
en la carpeta indicada.