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.
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