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

Respuesta
1

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?

Negativo :( ya hice la prueba y no da

jesús

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 

Pero no debe ser en el mismo libro

Tiene que ser en un libro nuevo en una hoja nueva

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

  1. Abre tu libro de Excel
  2. Para abrir Vba-macros y poder pegar la macro, Presiona Alt + F11
  3. En el menú elige Insertar / Módulo
  4. En el panel del lado derecho copia la macro
  5. Ahora para crear un botón, puedes hacer lo siguiente:
  6. Inserta una imagen en tu libro, elige del menú Insertar / Imagen / Autoformas
  7. Elige una imagen y con el Mouse, dentro de tu hoja, presiona click y arrastra el Mouse para hacer grande la imagen.
  8. 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”
  9. Vuelve a presionar click derecho dentro de la imagen y ahora selecciona: Asignar macro. Selecciona: pegar
  10. Aceptar.
  11. Para ejecutarla dale click a la imagen.

siiiiiii funciona así, poniendo un botón y relacionarlo con la macro, copia no solo en la misma hoja si no donde ponga el botón con la macro asignada, ¿pero ahora como seria para que ubique en la celda A7 vaya a la ultima celda vacía y copie lo seleccionado?

Gracias y saludos

Jesús

Recuerdas la primera macro

Sub pegar()
'Act.Por.Dante Amor
    Range("A" & Rows.Count).End(xlUp).Offset(1, 0).PasteSpecial Paste:=xlPasteAll
    Application.CutCopyMode = False
End Sub
Respuesta
1

Este ejemplo te enseña como copiar pegar y cortar

http://www.programarexcel.com/2014/07/como-copiar-cortar-y-pegar-en-vba.html 

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas