Macro para copiar datos de una tabla excluyendo encabezados en Excel

En algunas ocasiones será necesario seleccionar o copiar la información contenida en una tabla de Excel, pero sin tomar en cuenta los encabezados. Se me ocurre para copiar información de distintas tablas y hacer una con datos concentrados.

En el artículo llamado Cargar encabezados de tabla en Combobox de Excel con vba manejamos también información de una tabla, pero el propósito era recoger los encabezados. Para este artículo vendría siendo lo contrario.

Cómo funciona

Tenemos una tabla simple la cual al usar el botón que dice Copiar datos sin encabezados, nos preguntará sobre el destino que queremos para los datos, si es una HOJA del mismo archivo con en un nuevo LIBRO. El destino a pegar deberemos escribirlo. Si la tabla tiene filtro, tomará los datos visibles en el filtro aplicado.

Copiar datos de tabla sin encabezados en Excel

Figura 1. Se escribe el destino donde los datos serán pegados.

Código de la macro

Incluyo el código de la macro donde voy comentando cada acción que realiza la macro, desde que detecta el tamaño de la tabla hasta el momento en que el manejador de errores se lanza en caso de que ocurra uno.

Option Explicit
Sub copiarDatosSinEncabezado()
'
'Declaramos variables.
Dim CuentaR As Integer
Dim CuentaC As Integer
Dim strMsgDestino As String
Dim Rango As Range
'
'En caso de error...
On Error GoTo ErrorHandler
'
'Asignamos valores a las variables.
CuentaR = ActiveCell.CurrentRegion.Rows.Count
CuentaC = ActiveCell.CurrentRegion.Columns.Count
'
'En caso de que no haya suficientes datos en la tabla no continúa.
If CuentaR < 2 Then
    MsgBox "No hay suficientes datos en la tabla", vbExclamation, "EXCELeINFO"
Else
    '
    'Guardamos en variable el rango de los datos sin encabezado.
    Set Rango = ActiveCell.CurrentRegion.Offset(1, 0).Resize(CuentaR - 1, CuentaC).SpecialCells(xlCellTypeVisible)
    'Rango.Select
    strMsgDestino = InputBox("Se copiarán los datos sin encabezado." & vbNewLine + vbNewLine & _
                             "Escribre HOJA o LIBRO para confirmar el destino.", "EXCELeINFO - Pegar datos")
    '
    'En caso de que escriba HOJA o LIBRO continuará con la copia de los datos.
    Select Case strMsgDestino
    Case Is = "HOJA"
        ActiveWorkbook.Sheets.Add
    Case Is = "LIBRO"
        Workbooks.Add
    Case Else
        Application.CutCopyMode = False
        Exit Sub
    End Select
    '
    Rango.Copy
    ActiveSheet.Paste
    Application.CutCopyMode = False
End If
'
'En caso de algún error mostramos el mensaje descriptivo.
Exit Sub
ErrorHandler:
MsgBox "Ha ocurrido un error: " & Err.Description, vbExclamation, "EXCELeINFO"
'
End Sub

Otros artículos relacionados

Cargar encabezados de tabla en Combobox de Excel con vba

EXCELeINFO add-in: guardar datos filtrados como archivo nuevo

Anexos

:: Descargar ejemplo Copiar datos de tabla sin encabezados – EXCELeINFO.rar

You may also like...

Leave a Reply

Your email address will not be published.

%d bloggers like this: