Pegar selección desde otro libro de trabajo
Tengo el siguiente código:
Sub copiartkt()
Sheets("BOLETOS").Select
vuf = Range("d" & Rows.Count).End(xlUp).Row
Range("d3:o" & vuf).Select
Selection.Copy
End Sub
Bueno el cual selecciona y esta listo para copiar, este código lo tengo en mi libro 1 y lo que quiero es pegarlo en mi libro 2 a la hoja activa, en la hoja activa tengo un formato de kardex y bueno hice el siguiente código:
Sub pegar()
Dim n As Long
countult = Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Row
Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Select
Selection.PasteSpecial Paste:=xlPasteAll
Application.CutCopyMode = False
Range("a1").End(xlDown).Select
End Sub
El cual no funiona , que estoy haciendo mal ??
2 respuestas
Te falta indicarle en cuál columna vas a pegar la información, en el siguiente ejemplo, le estoy indicando que va a ser en la columna "D"
Sub pegar() 'Act.Por.Dante Amor Range("D" & Rows.Count).End(xlUp).Offset(1, 0).Select Selection.PasteSpecial Paste:=xlPasteAll Application.CutCopyMode = False End Sub
O puede ser así:
Sub pegar() 'Act.Por.Dante Amor Range("D" & Rows.Count).End(xlUp).Offset(1, 0).PasteSpecial Paste:=xlPasteAll Application.CutCopyMode = False End Sub
S a l u d o s . D a n t e A m o r
Recuerda valorar la respuesta.
Buen día estimado Dante, bueno gracias por responder pero no da , interrumpe la macro y lo pinta de amarillo en la linea Range("d" & Rows.Count).End(xlUp).Offset(1, 0).PasteSpecial Paste:=xlPasteAll
En mi primera macro selecciona lo que quiero copiar y bueno esto supongo que se almacena en el porta papeles, y después quiero pegarlo en cualquier hoja que necesite que vaya esa información algo así como copiar y pegar , solo que se situe en la celda A7 busque la ultima celda vacía y recién pegue lo seleccionado.
Gracias
Saludos
Jesús
Primero debes copiar algo.
Si el portapapeles está vacío te envía error.
Copia cualquier dato y después ejecuta la macro, verás que te lo pone al final de los datos que tengas en la columna D
Si continúa el error dime qué mensaje de error te aparece.
Negativo seleccione algo para copiar y ejecutar la macro pero me sale el error de
"Se ha producido el error '1004' en tiempo de ejecución :
Error en el método PasteSpecial de la clase Range."
y al darle depurar me muestra con amarillo el código
Range("d" & Rows.Count).End(xlUp).Offset(1, 0).PasteSpecial Paste:=xlPasteAll
Saludos
Jesús
Pero tienes que copiar
Selecciona algo, presiona control + C, para que de esa forma se llene el portapapeles
Y por último ejecutas la macro
Tu macro desde un inicio no copia, solamente pega.
Eso es lo que hace la macro que te estoy enviando, solamente pega, pero antes tienes que copiar algo, lo que tú estás haciendo es solamente seleccionar, pero tienes que seleccionar y copiar y luego ejecutar la macro.
Negativo, ya seleccione hice ctrl+c y después fui al libro donde necesito que copie y ejecute tu macro pero me vuelve a salir el mismo mensaje.
Claro que funciona!
No sé que tengas en la hoja, si la tienes protegida o tienes celdas combinadas o qué estás copiando.
Realiza la prueba en un archivo nuevo, en una hoja nueva.
¿Qué versión de excel tienes?
Cambia en la macro a esto:
Sub pegar() 'Act.Por.Dante Amor Range("D" & Rows.Count).End(xlUp).Offset(1, 0).PasteSpecial Paste:=xlValues Application.CutCopyMode = False End Sub
Intenta con esta otra macro
Sub pegar2() 'Act.Por.Dante Amor u = Range("D" & Rows.Count).End(xlUp).Row + 1 Range("D" & u).PasteSpecial Paste:=xlValues Application.CutCopyMode = False End Sub
Para probar no tienes que ir a otro libro, copia una celda de la misma hoja y ejecuta la macro.
Estimado Dante, yo trabajo con excel 2013, lo siento si no fui muy claro pero le explico lo siguiente, yo estoy manejando dos libros diferentes Caja Jesus 2015.xlsm y Cuentas por Cobrar.xlsm, en mi libro Caja tengo la hoja Boletos y es desde ahí que copio los datos al libro Cuentas por Cobrar, solo que en cuentas por cobrar manejo diferentes hojas de calculo, es por eso que quisiera que me ayude a pegar en la hoja que yo selecciono con este código :
Sheets("BOLETOS").Select vuf = Range("d" & Rows.Count).End(xlUp).Row Range("d3:o" & vuf).Select Selection.Copy
Este código lo tengo en el libro caja jesus 2015 el cual selecciona lo que quiero copiar, y después quiero ir a mi libro cuentas por cobrar y situarme en la hoja que necesito que vayan estos datos puede ser en la hoja1, hoja2, hoja3 , etc yo elegir la hoja a donde pegar y que lo almacenado se copie en la ultima celda vacía, desde la celda A7 revise cual es la ultima celda vacía y pegue lo que esta en mi código arriba seleccionado.
Gracias
Jesús
La macro que te envié pega.
Si no traes nada en memoria te va a enviar un error.
Si al elegir otro libro se ejecuta otra macro, entonces la memoria queda vacía.
Solamente prueba la macro como te dije:
Copia información de una celda y ejecuta la macro; verás que la información de la celda es pegada al final de la columna D.
Ejecuta tu macro que copia y luego simplemente ejecuta esta macro:
Sub pega ActiveSheet.Paste end sub
y me dices qué hace?
Probaste esto:
Sub pega ActiveSheet.Paste end sub
Y qué te hace?
Si no hace nada, es porque no tienes nada en memoria para pegar.
Intenta nuevamente, olvida tu macro. Realiza lo siguiente:
En un libro nuevo, copia esta macro:
Sub pega ActiveSheet.Paste end sub
En la celda C5 escribe la palabra "algo"
Presiona Control + C sobre la celda C5
Ahora selecciona la celda D6
Ejecuta la macro
En la celda C6 te debe pegar la palabra "algo"
Realiza esa pequeña prueba y me comentas.
Recuerda hacer todo en un libro nuevo, ya que tu libro tiene problemas por eso no puedes pegar.
Una consulta sera que te mando los archivos? me puedes indicar tu correo por favor, de todas maneras el mio es [email protected]
saludos
jesús
Claro que reviso tus archivos, pero tienes que hacer las pruebas que te dije.
Si no puedes hacer esa pequeña prueba de pegar en un archivo nuevo, no puedo saber qué problema tienes.
Realiza la pequeña prueba y me comentas, te vuelvo a escribir la pequeña prueba que tienes que hacer por si tienes dudas:
En un libro nuevo, copia esta macro:
Sub pega ActiveSheet.Paste end sub
En la celda C5 escribe la palabra "algo"
Presiona Control + C sobre la celda C5
Ahora selecciona la celda D6
Ejecuta la macro
En la celda D6 te debe pegar la palabra "algo"
Realiza esa pequeña prueba y me comentas.
Recuerda hacer todo en un libro nuevo
Después de que hagas esa prueba me comentas el resultado.
Estimado Dante hice la prueba como me indicaste y sale el mismo mensaje de error
"Se ha producido el error '1004' en tiempo de ejecución :
Error en el método PasteSpecial de la clase Range."
Es como si se perdería la orden al momento de pasar al otro libro
saludos
Jesús
Nuevamente te pido que hagas la pequeña prueba.
Te la escribo nuevamente por si tienes dudas, Todo lo tienes que hacer en un solo libro en una sola hoja. No te cambies de libro, no utilices tus libros, realiza la pequeña prueba en un libro nuevo.
En un libro nuevo, copia esta macro:
Sub pega ActiveSheet.Paste end sub
En la celda C5 escribe la palabra "algo"
Presiona Control + C sobre la celda C5
Ahora selecciona la celda D6
Ejecuta la macro
En la celda D6 te debe pegar la palabra "algo"
Realiza esa pequeña prueba y me comentas.
Recuerda hacer todo en un libro nuevo
Si estuvieras haciendo la prueba pequeña que te estoy pidiendo y no tuvieras nada en memoria, tendrías este error
Pero no sé qué estás probando, ya que el error que te aparece es otro.
Solamente te pido que pruebes esta macro
Sub pega ActiveSheet.Paste end sub
Pero no la pruebes en tus libros, ya que es claro que tus libros tienen algún problema.
Entonces realiza la prueba en un libro nuevo y me comentas.
Si ya hice la prueba en el mismo libro y nada :( me sale el mensaje " Se ha producido el error '1004' en tiempo de ejecución: Error en el método Paste de la clase Worksheet."
Saludos
Jesús
Tienes la hoja protegida.
Desprotege la hoja y realiza la prueba.
Desprotege la hoja y prueba cualquier macro y deberán funcionar.
Recuerda valorar
Hice todo tal como me indico que haga, ctrl+C en la celda que me indico y lo puntea y después ejecuto la macro
Sub pega()
ActiveSheet.Paste
End Sub
Y me sale el mismo error de la captura de pantalla. E hice todo en un nuevo libro
Hay una cosa que acabo de darme cuenta al momento de poner ctrl+c puntea la celda y al ir a la ficha de Macros para ejecutar donde nos muestra en un cuadrito todas las macros, deja de estar punteada la celda y sale el error.
Saludos
Jesús
Entra a las macros, pero presionando las teclas Alt + F11
O bien, puedes seleccionar del menú Programador, Visual Basic y ya en Visual Basic, seleccionas el módulo y la macro y presionas F5 para ejecutarla.
La otra opción es que pongas un botón para ejecutar la macro:
Sigue las Instrucciones para un botón y ejecutar la macro
- Abre tu libro de Excel
- Para abrir Vba-macros y poder pegar la macro, Presiona Alt + F11
- En el menú elige Insertar / Módulo
- En el panel del lado derecho copia la macro
- Ahora para crear un botón, puedes hacer lo siguiente:
- Inserta una imagen en tu libro, elige del menú Insertar / Imagen / Autoformas
- Elige una imagen y con el Mouse, dentro de tu hoja, presiona click y arrastra el Mouse para hacer grande la imagen.
- Una vez que insertaste la imagen en tu hoja, dale click derecho dentro de la imagen y selecciona: Tamaño y Propiedades. En la ventana que se abre selecciona la pestaña: Propiedades. Desmarca la opción “Imprimir Objeto”. Presiona “Cerrar”
- Vuelve a presionar click derecho dentro de la imagen y ahora selecciona: Asignar macro. Selecciona: pegar
- Aceptar.
- Para ejecutarla dale click a la imagen.
- Compartir respuesta
Este ejemplo te enseña como copiar pegar y cortar
http://www.programarexcel.com/2014/07/como-copiar-cortar-y-pegar-en-vba.html
- Compartir respuesta