06/10/16
Buenas tardes, Oscar
A continuación te paso una rutina que deberías agregar a un archivo auxiliar que funcionará como receptor de las hojas delos archivos que, idealmente, tendrás en una carpeta.
Al final del proceso, podrás eliminar la hoja original y guardarlo con otro nombre.
En ese nuevo archivo operativo, accede al Editor de VBA (Atajo: Alt + F11), inserta un módulo - si no tuvieras uno ya- y pega el siguiente código:
Sub juntator()
'---- Variables modificables:
'=== OSCAR, modifica estos datos de acuerdo a tu proyecto:
DirBusc = "C:\CARPETAdeARCHIVOS"
Extension = "xlsx"
'---- fin Variables
'
'---- inicio de rutina:
Set Consolidado = ActiveWorkbook
DirBusc = DirBusc & IIf(Right(DirBusc, 1) = "\", "", "\")
LosArchivos = Dir(DirBusc & "*." & Extension)
Application.DisplayAlerts = False
Do While LosArchivos <> ""
Workbooks.Open DirBusc & LosArchivos, xlNo
ActiveSheet.Copy After:=Consolidado.Sheets(Consolidado.Sheets.Count)
NomHoja = Left(LosArchivos, InStr(1, LosArchivos, Extension) - 2)
ActiveSheet.Name = Trim(Left(LosArchivos, WorksheetFunction.Min(21, InStr(1, LosArchivos, Extension) - 2)))
Workbooks(LosArchivos).Close xlNo
cont = cont + 1
LosArchivos = Dir
Loop
Application.DisplayAlerts = True
ElMensaje = IIf(cont = 0, "NO SE AGREGO HOJA ALGUNA", "Se agregaron las hojas de : " & cont & " archivo" & IIf(cont > 1, "s", ""))
TipoMens = IIf(cont = 0, vbCritical, vbInformation)
ElTitulo = IIf(cont = 0, "NO SE HIZO NADA", "TERMINADO!")
Application.ScreenUpdating = True
MsgBox ElMensaje, TipoMens, ElTitulo
End Sub
Set Consolidado = Nothing
End Sub
Nota que al principio del código le podrás indicar de qué carpeta leer los archivos y cual es la extensión que deseas considerar. Si quisieras que traiga todos los archivos de MS Excel, reemplazala la variable "xlsx" por "xls*"
La rutina se encarga de agregar la hoja activa de cada archivo que abra a este consolidador, coloca el nombre del archivo en la pestaña y cierra el que abrió, sin cambios, para pasar al siguiente.
.