Curso Excel VBA y Macros – Cap. 28 – Práctica 2: Optimizando macro para Agrupar hojas en una sola

<<CURSO COMPLETO EN YOUTUBE>>

En este tutorial vamos a retomar el desarrollo que hicimos en el capítulo 27, donde veíamos cómo agrupar información de varias hojas en una sola.

Veremos algunas técnicas muy efectivas que nos ayudarán a realizar desarrollos más óptimos logrando hacer lo mismo que la práctica anterior, pero en lugar de movernos entre hojas, desde la primera hoja, haciendo referencia a los rangos de las demás hojas, logramos agrupar la información en una sola hoja.

Así que si quieres pasar al siguiente nivel en la optimización de macros, mira el video tutorial.

Ver video Capítulo 28 Excel VBA & Macros

Suscríbete al canal de EXCELeINFO en YouTube para aprender más de Excel y macros.

Caso práctico 1, agrupar hojas

Para poder agrupar los datos varias hojas en una sola, debemos tener los mismos encabezados en todas las hojas para garantizar que la hoja concentradora no tenga columnas de más.

La macro recorrerá cada una de las hojas y tomará los datos para luego pegarlos en la primera hoja, donde se concentrarán los datos.

También la macro puede omitir hojas que cumplan con un nombre para omitir el contenido y no copiar nada contenido en esa hoja.

Temas tratados

En este video tutorial repasaremos los siguientes temas:

  • Tipos de variables.
  • Función MsgBox.
  • Instrucción If…Then…Else.
  • Agregar hojas.
  • Copiar celdas.
  • Guardar valores en variables.
  • Ciclo For…Next.
  • Cambiar nombre de hoja.
  • Autoajustar tamaño de columnas.

Caso práctico 2, agrupar hojas haciendo referencia a rangos de otras hojas

En este caso práctico 2, optimizamos el ejemplo del caso 1 con algunas mejoras significativas que nos harán entender mejor el tema de las referencias a rangos y que ejecute una macro sin necesitar de estar activando hojas para copiar los datos.

La nueva macro se podrá ejecutar sin problema aunque las hojas estén ocultas, además de aprender a usar el Operador AND para comparar varios nombres de hojas y omitirlas para no tomar en cuenta su contenido.

Temas tratados macro optimizada

Además de los temas que vimos en la práctica anterior, en esta optimización veremos los siguientes temas:

  • Usar el operador AND para comparar si el nombre de una hoja es diferente a cierto nombre Y a otro nombre.
  • Usaremos la instrucción SET para asignar rangos a variables de objeto.
  • Usaremos la propiedad COUNT para tomar el conteo de filas y columnas de rangos.
  • Combinaremos las propiedades OFFSET y RESIZE para tomar los dato cada una de las hojas y copiarlos excluyendo encabezados.

Código VBA de la macro

Option Explicit

'EXCELeINFO
'MVP Sergio Alejandro Campos
'http://www.exceleinfo.com
'https://www.youtube.com/user/sergioacamposh
'http://blogs.itpro.es/exceleinfo

Sub AgruparHojas()

Dim Cuenta As Integer
Dim i As Integer
Dim MsgContinuar As Boolean
Dim Rango As Range
Dim Rango2 As Range
Dim CuentaF As Integer
Dim CuentaF2 As Integer
Dim CuentaC As Integer

MsgContinuar = MsgBox("Se agruparán las tablas de igual estructura." + _
vbNewLine + vbNewLine + "Desea continuar?", vbYesNo + vbQuestion, "EXCELeINFO")

If MsgContinuar = vbNo Then Exit Sub

ActiveWorkbook.Sheets.Add Before:=Sheets(1)
Sheets(2).Range("A1:G1").Copy Sheets(1).Range("A1")
Sheets(1).Range("A2").Select

Cuenta = Sheets.Count

For i = 2 To Cuenta
    
    If Sheets(i).Name <> "EXCELeINFO" And Sheets(i).Name <> "HojaPrueba" Then
        
        Set Rango = Sheets(i).Range("A1").CurrentRegion
        CuentaF = Rango.Rows.Count
        CuentaC = Rango.Columns.Count
        
        Set Rango2 = Sheets(1).Range("A1").CurrentRegion
        CuentaF2 = Rango2.Rows.Count
        Rango.Offset(1, 0).Resize(CuentaF - 1, CuentaC).Copy Sheets(1).Cells(CuentaF2 + 1, 1)
        
        Set Rango = Nothing
        Set Rango2 = Nothing
        
    Else
        'Nada
    End If
Next i

Cells.EntireColumn.AutoFit
Sheets(1).Name = "Concentrado"

End Sub

Descarga el archivo de ejemplo

028 – Práctica 2 – Optimizando macro para Agrupar hojas en una sola.zip

<<CURSO COMPLETO EN YOUTUBE>>

Si te gustó este tutorial por favor regístrate en nuestra Lista de correo y Suscríbete a nuestro canal de YouTube para que estés siempre enterado de lo nuevo que publicamos.

You may also like...