Agregar fila y pegar clipboard en Tabla Excel |
Responder |
Autor | |
AnSanVal
Ver perfil usuario
Enviar mensaje privado
Ver los mensajes del usuario
Visite la página de los usuarios
Añadir a la lista de amigos
Administrador Unido: 16/Marzo/2005 Localización: España Estado: Sin conexión Puntos: 5976 |
Tema: Agregar fila y pegar clipboard en Tabla Excel Enviado: 08/Enero/2021 a las 00:43 |
Si funciona... y te gusta, no hay más que hablar.
|
|
Saludos desde Tenerife.
|
|
Delarc
Asiduo Unido: 03/Marzo/2007 Localización: Argentina Estado: Sin conexión Puntos: 261 |
Enviado: 07/Enero/2021 a las 23:56 |
Hola amigos, encontré esta solución: Copio al clipboard datos de la HojaActiva Range("f3:f19").Copy Luego Pego esos datos en la TablaPrueba que NO ESTÁ en la HojaActiva, con estas líneas: With Range("TablaPrueba") .Cells(.Rows.Count, 1).PasteSpecial xlPasteValues, Transpose:=True .ListObject.ListRows.Add End With Parece funcionar, pero me gustaría que lo evalúen personas con mas experiencia...
Editado por Delarc - 07/Enero/2021 a las 23:57 |
|
Saludos desde La Plata, Argentina
|
|
AnSanVal
Ver perfil usuario
Enviar mensaje privado
Ver los mensajes del usuario
Visite la página de los usuarios
Añadir a la lista de amigos
Administrador Unido: 16/Marzo/2005 Localización: España Estado: Sin conexión Puntos: 5976 |
Enviado: 05/Enero/2021 a las 23:01 |
Delarc.- «... en tu código el Offset(1) hace que si la tabla está sin datos (es decir, sólo es el encabezado y una primera fila vacía) los datos se peguen en la primera fila abajo de la tabla... y no son parte de la Tabla...»
- ¡Efectivamente!, está pensado para que la tabla esté iniciada y simplificar el proceso, no siendo necesario añadir previamente una fila a la tabla. Si (por la razón que sea) prefieres añadir la fila con ...ListRows.Add, eliminas Offset(1) y «muerto el perro se acabó la rabia». SkaryBlondi.- «... Yo personalmente huyo de las tablas en Excel ya que para eso está Access y además si hay muchos registros penaliza mucho el rendimiento...» - Para gustos colores, para mi las tablas Excel son muy valiosas y versátiles. - También Access si tiene «muchos registros» da problemas, aunque indudablemente, «muchos» (concepto relativo) tiene diferente valor para Access que para Excel. |
|
Saludos desde Tenerife.
|
|
Delarc
Asiduo Unido: 03/Marzo/2007 Localización: Argentina Estado: Sin conexión Puntos: 261 |
Enviado: 05/Enero/2021 a las 14:54 |
Sí, yo adoro las tablas...
"En el Libro de la Vida la página de los gustos permanece el blanco"... jeje Buen año ! |
|
Saludos desde La Plata, Argentina
|
|
Delarc
Asiduo Unido: 03/Marzo/2007 Localización: Argentina Estado: Sin conexión Puntos: 261 |
Enviado: 05/Enero/2021 a las 14:52 |
Hola AnSanVal!
Sí, mas o menos eso es lo que estoy haciendo ahora y funciona perfecto. Lo que pretendo es aprender como el IntelliSense (o como se llame) del Excel, que con un simple .Add le agrega una nueva Row a la Tabla sin importar donde ésta se ubique en el Libro, podría después pegarle datos. Me extraña que para esto último, todas las soluciones requieren especificar la hoja donde se halla la Tabla. De la única manera que lo puedo hacer es recorriendo la fila celda por celda y no en un "paquete" como lo hace el PasteEspecial. Quizás no lo han hecho para cuidar que si le agregas columnas a tu Tabla los datos se acomoden correctamente. A propósito, en tu código el Offset(1) hace que si la tabla está sin datos (es decir, sólo es el encabezado y una primera fila vacía) los datos se peguen en la primera fila abajo de la tabla... y no son parte de la Tabla. |
|
Saludos desde La Plata, Argentina
|
|
SkaryBlondi
Habitual Unido: 24/Octubre/2020 Localización: Asturias Estado: Sin conexión Puntos: 89 |
Enviado: 05/Enero/2021 a las 13:56 |
Por dar un apunte transversal Yo personalmente huyo de las tablas en Excel ya que para eso está access y además si hay muchos registros penaliza mucho el rendimiento. Si hay captura manual de datos existe la opción de validación de datos para evitar duplicados y si es una importación normalmente lo cargo en una hoja temporal para eliminar duplicados, ordenar y copiar a la hoja de destino. Como indicaba AnSanVal en Excel se puede saber fácilmente la última fila y/o columna de la hoja seleccionada y a partir de ahí definir rangos y tomar decisiones. Feliz año nuevo y que le den al 2020 Saludos, |
|
AnSanVal
Ver perfil usuario
Enviar mensaje privado
Ver los mensajes del usuario
Visite la página de los usuarios
Añadir a la lista de amigos
Administrador Unido: 16/Marzo/2005 Localización: España Estado: Sin conexión Puntos: 5976 |
Enviado: 05/Enero/2021 a las 02:51 |
¿Quieres aprovechar las «ventajas» de la tabla y pierdes recursos seleccionando rangos? Desde la hoja de la tabla (da igual en que rango esté la tabla): Sub TransponerEnTabla() Worksheets("Hoja1").Range("F3:F19").Copy Cells(Rows.Count, [Tabla1].Column).End(xlUp).Offset(1). _ PasteSpecial Paste:=xlPasteValues, Transpose:=True End Sub |
|
Saludos desde Tenerife.
|
|
Delarc
Asiduo Unido: 03/Marzo/2007 Localización: Argentina Estado: Sin conexión Puntos: 261 |
Enviado: 04/Enero/2021 a las 20:35 |
Hola,
Gracias por tu sugerencia, pero con ese método debo indicar la HOJA y el RANGO donde pegar los datos. Lo que intento hacer es aprovechar las "ventajas" de la Tabla Excel, que entre otras cosas, permite mover la tabla de lugar, agregarle filas y/o columnas, sin tener que corregir el código. Saludos |
|
Saludos desde La Plata, Argentina
|
|
SkaryBlondi
Habitual Unido: 24/Octubre/2020 Localización: Asturias Estado: Sin conexión Puntos: 89 |
Enviado: 04/Enero/2021 a las 18:12 |
Buenas tardes Puedes probar con Sheets("HojaDestino").Range("RangoDestino") = Sheets("HojaOrigen").Range("RangoOrigen").Value Saludos,
|
|
Delarc
Asiduo Unido: 03/Marzo/2007 Localización: Argentina Estado: Sin conexión Puntos: 261 |
Enviado: 04/Enero/2021 a las 17:34 |
Quisiera aprovechar las ventajas de las Tablas Excel. Pero no logro solucionar esta tarea: Copio al clipboard cierto contenido de mi hoja activa: Range("F3:F19").Select Selection.Copy Ahora pretendo pegar esos datos en una nueva fila de una Tabla que está en otra Hoja. Para acceder a la tabla y agregarle una nueva fila, uso: Range("NombreTabla").ListObject.ListRows.Add Hasta aquí funciona bien. Ahora el problema es como Pegar el contenido del clipboard en esa fila creada. La idea es usar algo como: PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, _ SkipBlanks:=False, Transpose:=True Pero encontré que para usar PasteEspecial debo resignar las ventajas de la Tabla y tratarla como a un "rango común", usando un código así: Sheets("NombreHojaTablaDestino").Select Range("B3").Select 'sería la celda superior izquierda de la Tabla Selection.End(xlDown).Select If ActiveCell.Value <> "" Then ActiveCell.Offset(1, 0).Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, _ SkipBlanks:=False, Transpose:=True ¿Alguna pista?
Editado por AnSanVal - 08/Enero/2021 a las 00:44 |
|
Saludos desde La Plata, Argentina
|
|
Responder | |
Tweet
|
Ir al foro | Permisos de foro Usted No puede publicar nuevos temas en este foro Usted No puede responder a temas en este foro Usted No puede borrar sus mensajes en este foro Usted No puede editar sus mensajes en este foro Usted No puede crear encuestas en este foro Usted No puede votar en encuestas en este foro |