Error al crear una macro.

Tengo la siguiente macro la cual me da un error.

Lo que quiero es copiar una fila de la columa A1 a la columna B5 desde un origen de datos hasta la tabla principal. Ayudenme que no se cual es el error.

Sub extraerdatos()
'Para que no vea la macro

'Defeinir objetos a utilizar

Dim hojitaorigen As Excel.Worksheet
Dim hojitadestino As Excel.Worksheet
Dim rangoorigen As Excel.Range
Dim rangodestino As Excel.Range

Dim librodatos As Workbook

'Indicar el libro de datos

Set librodatos = Workbooks.Open("C:\Users\llatorreb\Escritorio\LO AVANZADO EN LAPTOP DE JENNY\FINALES CARGADOS\Base Total_20180724.xlsx")

'activar este libro

'Indicar hojas de origen y destino

Set hojitaorigen = Worksheets("Hoja1")
Set hojitadestino = librodatos.Worksheets("Hoja1")

'Celda origen y destino
Const celdaorigen = "B5:B211522"
Const celdadestino = "A1:A211522"

'Inicializar los rangos de origen y destino
Set rangoorigen = hojitaorigen.Range(celdaorigen)
Set rangodestino = hojitadestino.Range(celdadestino)

'seleccionar rango de celas de origen
rangodestino.Select

Selection.Copy
'pegar datos en celda destino

rangodestino.PasteSpecial xlPasteValues
Application.CutCopyMode = False

'guardar y cerrar el libro de excel de destino
librodatos.Save
librodatos.Close

End Sub

Sub extraerdatos()
'Para que no vea la macro

'Defeinir objetos a utilizar

Dim hojitaorigen As Excel.Worksheet
Dim hojitadestino As Excel.Worksheet
Dim rangoorigen As Excel.Range
Dim rangodestino As Excel.Range

Dim librodatos As Workbook

'Indicar el libro de datos

Set librodatos = Workbooks.Open("C:\Users\llatorreb\Escritorio\LO AVANZADO EN LAPTOP DE JENNY\FINALES CARGADOS\Base Total_20180724.xlsx")

'activar este libro

'Indicar hojas de origen y destino

Set hojitaorigen = Worksheets("Hoja1")
Set hojitadestino = librodatos.Worksheets("Hoja1")

'Celda origen y destino
Const celdaorigen = "B5:B211522"
Const celdadestino = "A1:A211522"

'Inicializar los rangos de origen y destino
Set rangoorigen = hojitaorigen.Range(celdaorigen)
Set rangodestino = hojitadestino.Range(celdadestino)

'seleccionar rango de celas de origen
rangodestino.Select

Selection.Copy
'pegar datos en celda destino

rangodestino.PasteSpecial xlPasteValues
Application.CutCopyMode = False

'guardar y cerrar el libro de excel de destino
Librodatos. Save
Librodatos. Close

End Sub

1 Respuesta

Respuesta
2

En principio veo 3 errores:

1 - si vas a copiar /pegar por rangos, deben ser iguales. Estás declarando un rango a partir de fila 5 y el otro a partir de fila 1

2- Estás copiando y pegando el mismo rango:

'seleccionar rango de celas de origen
rangodestino.Select

Selection.Copy
'pegar datos en celda destino

3- En esa misma línea (cuando la arregles), no selecciones el rango solo copialo:

rangoorigen .Copy

¿No te quedó claro? Te comento en el código las fallas encontradas:

Sub extraerdatos()
'Para que no vea la macro
'Defeinir objetos a utilizar
Dim hojitaorigen As Excel.Worksheet
Dim hojitadestino As Excel.Worksheet
Dim rangoorigen As Excel.Range
Dim rangodestino As Excel.Range
Dim librodatos As Workbook
'Indicar el libro de datos
Set librodatos = Workbooks.Open("C:\Users\llatorreb\Escritorio\LO AVANZADO EN LAPTOP DE JENNY\FINALES CARGADOS\Base Total_20180724.xlsx")
'activar este libro
'Indicar hojas de origen y destino
Set hojitaorigen = Worksheets("Hoja1")
Set hojitadestino = librodatos.Worksheets("Hoja1")
'Celda origen y destino    'AQUI ESTÁS COPIANDO UN RANGO DESDE FILA 5 Y LO PEGAS EN FILA1
Const celdaorigen = "B5:B211522"
Const celdadestino = "A1:A211522"    'SI SE PEGA DESDE A1 DEBE SER "A1:A211518" 
'Inicializar los rangos de origen y destino
Set rangoorigen = hojitaorigen.Range(celdaorigen)
Set rangodestino = hojitadestino.Range(celdadestino)
'seleccionar rango de celas de origen
'rangodestino.Select       'ESTAS SELECCIONANDO EL RANGODESTINO, DEBIERA SER EL DE ORIGEN
                     'Y EN LUGAR DE ESTAS 2 LÍNEAS, DEJA UNA SOLA:
'Selection.Copy      'rangoorigen.Copy
'pegar datos en celda destino
rangodestino.PasteSpecial xlPasteValues
Application.CutCopyMode = False
'guardar y cerrar el libro de excel de destino
librodatos.Save
librodatos.Close
End Sub

Recuerda de valorar la respuesta (opciones: excelente o buena)

Si luego te surgen otras complicaciones con tu código deja nuevas consultas en el tablón.

Sdos.

Elsa

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas