Saltar al contenido

Macro para copiar y pegar varias veces


Recommended Posts

publicado

Buen día a todo el foro.

A ver si me hago entender y me pueden ayudar.

-He adjuntado una macro que básicamente lo que hace es pegar en un libro el rango de datos que he seleccionado previamente en un libro auxiliar. 

-La macro pega los datos en un determinado rango con su encabezado los valores, posteriormente copia los datos sin sus encabezados en una tabla "Tabla5", borrando los datos pegados. Hasta este punto mas o menos bien.

-Lo que quería conseguir, de ahí me consulta es lo siguiente:

Poder hacer mas selecciones en el libro Auxiliar y que vaya pegando en la tabla "Tabla5" los datos a partir de la  última fila con datos.

Buenos días a todos 

MCopiarPegar.zip

publicado

Hola

Hace 7 horas, Benito Bartolomé dijo:

-Lo que quería conseguir, de ahí me consulta es lo siguiente:

Poder hacer mas selecciones en el libro Auxiliar y que vaya pegando en la tabla "Tabla5" los datos a partir de la  última fila con datos.

¿Pero necesitas copiar todo o solo un rango seleccionado?

 

Saludos 

publicado

Lo entiendo, mire el video, pero no me respondiste la pregunta

Necesitas copiar todo [de un solo], seleccionas rangos [manualmente] al azar o por algun criterio [filtro],  debes ser explicito, porque en cada una de mis dudas, significa que son 3 procedimientos diferentes

 

Saludos 

publicado

Sin copiar el encabezado, te basta con esto:

Sub PegarSaldo()
Application.ScreenUpdating = False
If Range("A5") = "" Then
   Range("A5").Select
Else
   Range("A4").End(xlDown).Offset(1).Select
End If
ActiveSheet.Paste
Application.ScreenUpdating = True
End Sub

Simplemente, Ctrl+c y Ctrl+v en la celda A de la fila del Total.

publicado

Perdón por tardar en contestar, iba en coche.

Tiene que ser manualmente, sería  buena la idea de todo pero no me sirve para este caso concreto. 

La mayoría  de las veces solo será  un copiado aunque hay ocasiones que tendre que copiar y pegar dos o tres veces.

Otra vez gracias por su interés.  Un abrazo 

Espero haber resuelto sus dudas.

 

publicado
Hace 4 minutos , Antoni dijo:

Sin copiar el encabezado, te basta con esto:


Sub PegarSaldo()
Application.ScreenUpdating = False
If Range("A5") = "" Then
   Range("A5").Select
Else
   Range("A4").End(xlDown).Offset(1).Select
End If
ActiveSheet.Paste
Application.ScreenUpdating = True
End Sub

Simplemente, Ctrl+c y Ctrl+v en la celda A de la fila del Total.

Hola Antoni,  gracias  por contestar. Hoy no puedo verlo porque estoy ahora mismo trabajando en otra cosa, mañana veo tú aporte y te comento. Unha aperta  e que chova??‍♂️?

publicado
Hace 1 hora, Gerson Pineda dijo:

Lo entiendo, mire el video, pero no me respondiste la pregunta

Necesitas copiar todo [de un solo], seleccionas rangos [manualmente] al azar o por algun criterio [filtro],  debes ser explicito, porque en cada una de mis dudas, significa que son 3 procedimientos diferentes

 

Saludos 

Te he contestado antes pero no te había citado. Lo vuelvo hacer por si acaso no lo habías  visto. Saludos 

publicado
Hace 13 horas, Antoni dijo:

Sin copiar el encabezado, te basta con esto:


Sub PegarSaldo()
Application.ScreenUpdating = False
If Range("A5") = "" Then
   Range("A5").Select
Else
   Range("A4").End(xlDown).Offset(1).Select
End If
ActiveSheet.Paste
Application.ScreenUpdating = True
End Sub

Simplemente, Ctrl+c y Ctrl+v en la celda A de la fila del Total.

Bo día Antoni;

He probado la macro y ejecuta correctamente teniendo en cuenta la condición no copiar el encabezado.

Esta opción no la puedo evitar y te explico:

En la hoja están pegados los datos de otro programa ya que el programa en cuestión no os lo puedo pasar. En el dichoso programa si no copio los encabezados y tiene alguna columna vacía al pegar los datos se dispersar aumentando o disminuyendo columnas.

He cogido tú macro y le he añadido alguna cosilla mas y creo que funciona correctamente. Si le ves algún fallo me comentas.

Antes de insertar la macro tengo una última pregunta:

Como poner un control de errores , por ejemplo que por error no le has dado a copiar, ...

Sub pegarSaldo()
Application.ScreenUpdating = False

    'Windows("MCopiarPegar.xlsm").Activate
    Range("I4").Select
    ActiveSheet.Paste
    Range("I5:O" & Range("I" & Rows.Count).End(xlUp).Row).Copy

    If Range("A5") = "" Then
        Range("A5").Select
    Else
        Range("A4").End(xlDown).Offset(1).Select
    End If
    
    ActiveSheet.Paste
   'Elimina los datos pegados
    Columns("I:O").Select
    Selection.Delete Shift:=xlToLeft
    Range("I4").Select
    
Application.ScreenUpdating = True
End Sub

 

publicado

En lugar de copiar con Ctrl+c, hazlo con la macro CopiarSaldo, a la que te recomiendo que asignes un combinación de teclado, por ejemplo Ctrl+Shift+C.

Public Copiado As Boolean

Sub CopiarSaldo()
Copiado = True
Selection.Copy
End Sub

Sub pegarSaldo()
Application.ScreenUpdating = False

'--
If Copiado = False Then
   MsgBox "No has copiado", vbCritical
   Exit Sub
End If
Copiado = False

'--
   'Windows("MCopiarPegar.xlsm").Activate
   Range("I4").Select
   ActiveSheet.Paste
   Range("I5:O" & Range("I" & Rows.Count).End(xlUp).Row).Copy
   
   If Range("A5") = "" Then
       Range("A5").Select
   Else
       Range("A4").End(xlDown).Offset(1).Select
   End If
   
   ActiveSheet.Paste
   'Elimina los datos pegados
   Columns("I:O").Select
   Selection.Delete Shift:=xlToLeft
   Range("I4").Select
'--
Application.CutCopyMode = False
Application.ScreenUpdating = True
End Sub

 

publicado

Buenos días Antoni;

-Discúlpame pero no pillo la macro que me pasas, debo estar dormido aún.

-Algo debo estar haciendo mal, a ver si pillas donde me equivoco.

He puesto la macro en el mismo módulo porque no hablas de crear ninguno.

Copio de la hoja auxiliar con control + bloq Mayus + C  y le doy a la macro copiar y después a pegar y pega sin valores

Te paso un video por si ves algo que me estoy olvidando.

Video:

Video copiarPegarA

 

publicado

Hola Antoni;

-Disculpa por la tardanza pero tuve una mañana un poco liada.

-Ya logré hacer funcionar la macro e entendí lo que me decías. Es lunes maestro y aún estamos espesos. 

-La macro me sirve cuando trabajo sobre Excel en cambio no me permite copiar sobre el programa que trabajo que se llama AS-400. Ahí no tengo permisos para tocar y todo mi gozo en un pozo.

Si se te ocurre alguna cosa me dices en todo caso te lo agradezco mucho y la idea era muy buena.

Un abrazo fuerte y aprovecho la ocasión por si no volvemos a chatear para felicitarte las fiestas. 

Bo nadal e mellor ano (año para los demas ? siempre hay algún sacapuntas)

publicado

Hola de nuevo Antoní;

-Estaba probando la macro y me dio un error que no se como solucionar:

-Si copio de la hoja Auxiliar el encabezado con mas de dos líneas pega bien.

-En cambio si copio el encabezado con una sola línea me pega los datos en la línea donde van los subtotales.

No sé como corregir esto.

Te adjunto un pdf con una captura. 

Disculpa por no haberme dado cuenta antes.

 

Saludos

ErrorSubtotal.pdf

publicado
En 14/12/2020 at 11:01 , Antoni dijo:

Control + bloq Mayus + C no se puede asignar a una macro, revisa que combinación le has asignado.

Bo día Antoni;

Ya resolví el problema que me surgía al copiar un encabezado con una sola línea. 

Cita

-Estaba probando la macro y me dio un error que no se como solucionar:

-Si copio de la hoja Auxiliar el encabezado con mas de dos líneas pega bien.

-En cambio si copio el encabezado con una sola línea me pega los datos en la línea donde van los subtotales.

No sé como corregir esto.

He eliminado la línea del subtotal de la tabla y he añadido a la macro el cálculo del campo importe y ahora va bien.

Con esto ya finalizo la pregunta.

Adjunto la macro.

Saúdos e bo nadal.?

DatosAuxiliar.xlsx MCopiarPegar.xlsm

Archivado

Este tema está ahora archivado y está cerrado a más respuestas.

  • 109 ¿Te parecen útiles los tips de las funciones? (ver tema completo)

    1. 1. ¿Te parecen útiles los tips de las funciones?


      • No
      • Ni me he fijado en ellos

  • Ayúdanos a mejorar la comunidad

    • Donaciones recibidas este mes: 0.00 EUR
      Objetivo: 130.00 EUR
  • Archivos

  • Estadísticas de descargas

    • Archivos
      187
    • Comentarios
      97
    • Revisiones
      28

    Más información sobre "Un juego del Rabino en Excel"
    Última descarga
    Por pegones1

    1    1

  • Crear macros Excel

  • Mensajes

    • Hola nuevamente. Por eso la importancia de lo que mencionas tú como "ruta relativa". Tal cual comentas, y aún sin llegar a algunos detalles importantes para ayudarte, en realidad tal cual te comenté le día miércoles, pues sí podías hacer como comentabas, era cosa de obtener los Id de Windows (como tú los llamas) y la ruta de OneDrive en casa usuario y eso sí se puede obtener con VBA y luego pasarlo a PQ, pero medio que te cerraste en que "PQ no puede trabajar con rutas relativas", cosa cierta pero siempre hay formas. Si SAP puede o no guardar en OneDrive o SharePoint, pues si está mapeado en la PC ¡claro que se puede! Pero bueno, creo que si te es útil tu propia propuesta ¡avanza con eso!
    • Perdona @Abraham Valencia pero he estado liado estos días. En realidad todo el problema se reduce a estos dos problemas: Problema 1: El script que "fabrica" SAP y que luego "pego" en la macro, no es capaz de  guardar archivos en SharePoint. He estado buscando, y en realidad muchas personas tienen ese problema (no poder guardar un Excel en SAP a través de VBA). Eso muy probablemente sean problemas de permisos, que no puedo cambiar (no soy administrador de nada). Como no puedo solucionarlo así, paso al plan B, que es guardar en Excel que me genera SAP en el ordenador de cada usuario que ejecute la plantilla (y que sí está guardada en SharePoint), para después con PowerQuery llamar a ese Excel (el export). Para ello, pretendo guardar el export, en la ruta relativa "C:\..\..\..\OneDrive - NombreEmpresa\Documentos\SAP\SAP GUI" donde los \..\..\..\ saltan las rutas personales de cada usuario (tipo C:\users\IDusuario\). Eso lo hace bien, y el archivo se guarda en la ruta de cada usuario que lo usa, pero surge el problema 2 Problema 2: PowerQuery no trabaja con rutas relativas del tipo  "C:\..\..\..\OneDrive - NombreEmpresa\Documentos\SAP\SAP GUI" necesita que sea del tipo fija "C:\users\IDusuario\OneDrive - NombreEmpresa\Documentos\SAP\SAP GUI" pero claro, IDusuario es diferente para cada usuario.   Pero escribiendo todo esto, creo que he dado con una posible solución, no grabar el export en una ruta de usuario, sino en una en la raiz de C:, que siempre será igual para todos los usuarios, del tipo C:\Sap\export.xlsx que seria igual en todos los ordenadores. Asi sí podría decirle a PowerQuery que vaya siempre a la ruta C:\Sap\ que existirá en todos los ordenadores. Mañana intentaré hacer pruebas, aunque mi solución ideal seria que se pudiera guardar en el SharePoint. Saludos.
    • Hola La opción brindada por @torquemada es correcta, funciona, pero hay algunos inconvenientes que (desde mi punto de vista) no la convierten en mi primera elección. Los inconvenientes son: Tendrías que ir columna por columna haciendo los reemplazos, claro que no se harían a mano sino que utilizarías la opción reemplazar o la opción texto en columnas, aun asi demorará un poquito y será trabajoso. Cada vez que descargues otro listado, tendrás que volver a realizar los reemplazos. Me parece una mejor propuesta lo siguiente: Descarga los movimientos a un archivo de Excel Desde tu control de pagos (otro archivo) cargas los movimientos del archivo descargado mediante Power Query Power Query hará los reemplazos y reconocerá todo correctamente (sin que tengas que hacer nada especial) Cuando descargues los movimientos un día posterior, solamente tendrás que hacer clic en "Actualizar" y todo funcionará en automático
    • Hola a todos, Efectivamente, me temo que tal como trabajan las funciones =HOY() y/o =AHORA() (volátiles), sólo con macros puedes obtener soluciones. Un recurso pedestre podría ser, cada vez que quieras que se fije un dato, te sitúes en esa celda y pulses F2, F9 e INTRO.  Pero claro, puede ser un inconveniente si hay que hacerlo repetitivamente en muchas ocasiones,.............. en fin, lo comento sólo como posibilidad. Saludos,
    • Hola nuevamente, mi duda sigue siendo la ruta, o rutas, finales que quedan, esas que llamas "relativas"; igual por si acaso pon 3 o 4 de esas, tal cual son y/o se ven en el explorador de cada PC y, de ser posible, en cualquier otro "lado" en que las veas.
  • Visualizado recientemente

    • No hay usuarios registrado para ver esta página.
×
×
  • Crear nuevo...

Información importante

Echa un vistazo a nuestra política de cookies para ayudarte a tener una mejor experiencia de navegación. Puedes ajustar aquí la configuración. Pulsa el botón Aceptar, si estás de acuerdo.