Macro para poder copiar y pegar en un excel nuevo

Tengo un excel y necesito una macro que copie y pegue los datos en una nuevo documento. Pero el problema es el siguiente, cuando se copien y se peguen, necesito que dejen un espacio entre los antiguos datos y los nuevos, algo asi para crear una base de datos.

La macro que tengo es la siguiente :

Sub CopiarCeldas()

'Definir objetos a utilizar
Dim wbDestino As Workbook, _
wsOrigen As Excel.Worksheet, _
wsDestino As Excel.Worksheet, _
rngOrigen As Excel.Range, _
rngDestino As Excel.Range
'Indicar el libro de Excel destino
Set wbDestino = Workbooks.Open(ActiveWorkbook.Path & "\Respaldo.xlsx")

'Activar este libro
ThisWorkbook.Activate

'Indicar las hojas de origen y destino
Set wsOrigen = Worksheets("Perdidas")
Set wsDestino = wbDestino.Worksheets("Respaldo")

'Indicar la celda de origen y destino
Const celdaOrigen = "A10"
Const celdaDestino = "A2"

'Inicializar los rangos de origen y destino
Set rngOrigen = wsOrigen.Range(celdaOrigen)
Set rngDestino = wsDestino.Range(celdaDestino)

'Seleccionar rango de celdas origen
rngOrigen.Select
Range(Selection, Selection.End(xlDown)).Select
Range(Selection, Selection.End(xlToRight)).Select
Selection.Copy

'Pegar datos en celda destino
rngDestino.PasteSpecial xlPasteValues
Application.CutCopyMode = False

'Guardar y cerrar el libro de Excel destino
wbDestino.Save
wbDestino.Close

End Sub

Esto me permite copiar y pegar en otro documento pero cuando reemplazo los datos, se pegan encima y necesito que se salte un espacio y que copie los nuevos datos, eso espero haber sido lo suficientemente claro y espero su ayuda

2 respuestas

Respuesta
1

Prueba con la siguiente macro

Sub CopiarCeldas()
    'Definir objetos a utilizar
    Dim wbDestino As Workbook, _
    wsOrigen As Excel.Worksheet, _
    wsDestino As Excel.Worksheet, _
    rngOrigen As Excel.Range, _
    RngDestino As Excel. Range
    'Indicar el libro de Excel destino
    Set wbDestino = Workbooks.Open(ActiveWorkbook.Path & "\Respaldo.xlsx")
    'Activar este libro
    ThisWorkbook. Activate
    'Indicar las hojas de origen y destino
    Set wsOrigen = Worksheets("Perdidas")
    Set wsDestino = wbDestino.Worksheets("Respaldo")
    'Indicar la celda de origen y destino
    Const celdaOrigen = "A10"
    u = wsDestino.Range("A" & Rows.Count).End(xlUp).Row + 2
    'Const celdaDestino = "A" & u
    celdaDestino = "A" & u
    'Inicializar los rangos de origen y destino
    Set rngOrigen = wsOrigen.Range(celdaOrigen)
    Set rngDestino = wsDestino.Range(celdaDestino)
    'Seleccionar rango de celdas origen
    rngOrigen.Select
    Range(Selection, Selection.End(xlDown)).Select
    Range(Selection, Selection.End(xlToRight)).Select
    Selection.Copy
    'Pegar datos en celda destino
    rngDestino.PasteSpecial xlPasteValues
    Application.CutCopyMode = False
    'Guardar y cerrar el libro de Excel destino
    wbDestino.Save
    wbDestino.Close
End Sub

Saludos.Dante Amor

Si es lo que necesitas.

¡Gracias! Te lo agradezco pero podrías explicarme un poco como lo hiciste para tener una retroalimentación, por favor

Cambié está línea

Const celdaDestino = "A" & u

Por estas

u = wsDestino.Range("A" & Rows.Count).End(xlUp).Row + 2
celdaDestino = "A" & u

En las nuevas líneas estoy buscando la última línea con datos y le aumento 2 líneas para tener una fila en blanco.

hola buenas disculpa por nolestar pero necesito una ultima ayuda tengo este macro

Sub CopiarCeldas()
'Definir objetos a utilizar
Dim wbDestino As Workbook, _
wsOrigen As Excel.Worksheet, _
wsDestino As Excel.Worksheet, _
rngOrigen As Excel.Range, _
rngDestino As Excel.Range
'Indicar el libro de Excel destino
Set wbDestino = Workbooks.Open(ActiveWorkbook.Path & "\Historico Fallas.xlsx")
'Activar este libro
ThisWorkbook.Activate
'Indicar las hojas de origen y destino
Set wsOrigen = Worksheets("Perdidas")
Set wsDestino = wbDestino.Worksheets("Respaldo")
'Indicar la celda de origen y destino
Const celdaOrigen = "B10"
u = wsDestino.Range("A" & Rows.Count).End(xlUp).Row + 2
'Const celdaDestino = "A" & u
celdaDestino = "A" & u
'Inicializar los rangos de origen y destino
Set rngOrigen = wsOrigen.Range(celdaOrigen)
Set rngDestino = wsDestino.Range(celdaDestino)
'Seleccionar rango de celdas origen
rngOrigen.Select
Range(Selection, Selection.End(xlDown)).Select
Range(Selection, Selection.End(xlToRight)).Select
Selection.Copy
'Pegar datos en celda destino
rngDestino.PasteSpecial xlPasteValues
Application.CutCopyMode = False
'Guardar y cerrar el libro de Excel destino
wbDestino.Save
wbDestino.Close
End Sub

pero por ejemplo si en la hoja "peridas" relleno solo la fila 10 y quiero guardar esa sola fila, me tira un error 

se ha producido un erroe 1004 que es un error de copiado es como si me tomara desde la fila 10 hasta el infinito y me lo copia en la otra hoja asi y por eso tiene ese error, ahora si relleno la fila 10 y la 11 el excel no tiene problemas, solo sucede cuando tengo una sola fila ocupada, si me puedes ayudar a resolver eso te lo agradeceria 

Podrías crear una pregunta nueva. Quieres copiar desde la B10, ¿toda la información de la derecha y hacia abajo?

En el desarrollo de la nueva pregunta puedes poner que va dirigida a Dante Amor

Prueba con esta:

Sub CopiarCeldas()
    'Definir objetos a utilizar
    Dim wbDestino As Workbook, _
    wsOrigen As Excel.Worksheet, _
    wsDestino As Excel.Worksheet, _
    rngOrigen As Excel.Range, _
    RngDestino As Excel. Range
    'Indicar el libro de Excel destino
    Set wbDestino = Workbooks.Open(ActiveWorkbook.Path & "\Historico Fallas.xlsx")
    'Activar este libro
    ThisWorkbook. Activate
    'Indicar las hojas de origen y destino
    Set wsOrigen = Worksheets("Perdidas")
    Set wsDestino = wbDestino.Worksheets("Respaldo")
    'Indicar la celda de origen y destino
    Const celdaOrigen = "B10"
    u = wsDestino.Range("A" & Rows.Count).End(xlUp).Row + 2
    'Const celdaDestino = "A" & u
    celdaDestino = "A" & u
    'Inicializar los rangos de origen y destino
    Set rngOrigen = wsOrigen.Range(celdaOrigen)
    Set rngDestino = wsDestino.Range(celdaDestino)
    'Seleccionar rango de celdas origen
    rngOrigen.Select
    Range(celdaOrigen).CurrentRegion.Select
    Selection.Copy
    'Pegar datos en celda destino
    rngDestino.PasteSpecial xlPasteValues
    Application.CutCopyMode = False
    'Guardar y cerrar el libro de Excel destino
    wbDestino.Save
    wbDestino.Close
End Sub
Respuesta

Lo que necesitas primero es determinar la celda de destino.

Para ello mira

http://www.programarexcel.com/2014/05/como-determinar-la-ultima-fila-con-datos.html?m=1

Luego aplicas la macro que tienes.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas