Requiero una Macro de Excel que consolide en un archivo, información proveniente de otros archivos. El formato es el mismo

Requiero una macro en Excel que consolide en un archivo, información proveniente de un grupo de archivos. Tengo una macro elaborada pero no consolida la información. Los archivos tienen una pestaña oculta llamada "Resultado" y busco consolidar la información en una hoja con el mismo formato que la pestaña de los archivos y que se denomina "Consolidado". Quiero recopilar los resultados de una encuesta que se elabora frecuentemente.

1 respuesta

Respuesta
1

.01/11/16

Buenas noches, Luis

A continuación te paso una rutina que deberías agregar a tu archivo que funciona como receptor de las hojas de los archivos que, idealmente, tendrás en una carpeta.

En ese archivo operativo, accede al Editor de VBA (Atajo: Alt + F11), inserta un módulo (Insertar -Módulo) y pega el siguiente código:

Sub Consolid()
'---- Variables modificables ----
'=== LUIS, modificá estos datos de acuerdo a tu proyecto:
DirBusc = "C:\CarpetaDeArchivos" 'carpeta donde están los archivos
Extension = "xlsx" 'Extensión de los archivos a consolidar. Dejar "*" para que sean todos
TraerHoja = "Resultado" 'Hoja de donde tomar los datos de cada archivo
JuntarEn = "consolidado" 'Hoja de destino.
Limpiar = "SI" ' SI para vacíar la hoja consolidado o NO para que agregue a lo existente.
'---- fin Variables
'
'---- inicio de rutina:
'  
Sheets(JuntarEn).Select
If Limpiar = "SI" Then Cells.Clear
DirBusc = DirBusc & IIf(Right(DirBusc, 1) = "\", "", "\")
Set ArchConsol = ActiveWorkbook
LosArchivos = Dir(DirBusc & "*." & Extension)
Application.DisplayAlerts = False
Application.ScreenUpdating = False
Do While LosArchivos <> ""
    Application.StatusBar = ">>>>>>>>>>>>>> Un momento, egragando hoja de archivo " & Left(LosArchivos, InStr(1, LosArchivos, Extension) - 2)
    Donde = Application.WorksheetFunction.CountA(ArchConsol.Sheets(JuntarEn).Cells)
    Donde = IIf(Donde > 0, Cells(Sheets(JuntarEn).UsedRange.Row + Sheets(JuntarEn).UsedRange.Rows.Count + 1, Sheets(JuntarEn).UsedRange.Column).Address, "A1")
    Workbooks.Open DirBusc & LosArchivos, xlNo
    Sheets(TraerHoja).Visible = True
    Sheets(TraerHoja).UsedRange.Copy
    ArchConsol.Sheets(JuntarEn).Range(Donde).PasteSpecial Paste:=xlPasteValues
    ArchConsol.Sheets(JuntarEn).Range(Donde).PasteSpecial Paste:=xlPasteFormats
    Workbooks(LosArchivos).Close xlNo
    cont = cont + 1
    LosArchivos = Dir
Loop
Application.ScreenUpdating = True
Application.DisplayAlerts = True
    ElMensaje = IIf(cont = 0, "NO SE AGREGO DATOS DE NINGUN ARCHIVO", "Se agregaron DATOS 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
Set ArchConsol = Nothing
Application.StatusBar = False
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*"

También están indicadas la hoja de destino y la de origen de cada archivo (no iporta si estuviere oculta o no).

A falta de aclaración dejé una última variable que si dejas en SI, borrará todo lo que tiene la hoja de consolidación para empezar de nuevo. Si colocas NO, dejará los datos que tuviese al ejecutar la rutina.

El procedimiento se encarga de agregar a la hoja consolidación el contenido de la hoja Resultado de cada archivo que abra -como valores y con el formato original- y cierra el que abrió, sin cambios, para pasar al siguiente.

Pruebalo con tu caso real y coméntame si es lo que buscabas o si necesitas más apoyo con esto.

Un abrazo

Fernando

(Buenos Aires, Argentina)

.

Hola Fernando!

¡Muchas Gracias! La macro con los ajustes Que debo hacer funciona perfecto! En verdad reconozco el tiempo que iNvertiste en ayudarme.

saludos cordiales!

Luis Daniel

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas