copiar y pegar de un libro a otro por código

21/11/2008 - 08:55 por chiri13 | Informe spam
Hola a todos, gracias por leerme

necesito un poco de ayuda, quiero copiar y pegar de un libro de excel a otro

Tengo dos posibilidades (me gustaría que me ayudarais con las dos)

1º Directamente copiar y pegar la hoja
Desde libroActivo, busco el nuevo libro y copio la hoja que quiero

2ºCopiar y pegar las celdas que están llenas
Desde librosActivo, busco en el nuevo libro las celdas rellenas y las pego
en las celdas normales. Esto sí me sale, pero sólo hasta el registro 540, no
entiendo el porqué, además me dice que no es el mismo rango en el paso 2.1 y
el 2.2 cuando yo he dado "ultimafila" como una variable que obtengo y sí
debería serlo, os pongo el código y si podéis ayudarme os lo agradeceré
Sub CommandButton1_Click()
Dim MiExcel As Excel.Application
Dim LibroOrigen As Excel.Workbook
Dim HojaOrigen As Excel.Worksheet
Dim i As Long, j As Long
Dim RutaDeBusqueda As String
Dim Ultimafila As Long

'Paso 0
Set MiExcel = New Excel.Application
MiExcel.Visible = False
MiExcel.Workbooks.Close

RutaDeBusqueda = SeleccionarArchivo 'una pequeña función que permite
abrir el archivo

' Paso 1: Abrir el libro
MiExcel.Workbooks.Open Filename:=RutaDeBusqueda,
ReadOnly:=True
Set LibroOrigen = MiExcel.Workbooks(1)

' Paso 2.1: Copiar el rango
Set HojaOrigen = LibroOrigen.Worksheets(1)

Ultimafila = (HojaOrigen.Cells.SpecialCells(xlLastCell).Row)
'otras formarse de averiguar la última celda rellena: '[a1].End(xlDown).Row
'[a1].End(xlDown).Address
'MsgBox Ultimafila

HojaOrigen.Range(Cells(1, 1), Cells(Ultimafila, 7)).Copy

' Paso 2.2: Pegar el rango Opción 1

Hoja1.Range("A1:i" & Ultimafila)

'Paso 2.2: Pegar el rango Opción 1
'Hoja1.Cells(1, 1).Select
'Hoja1.Paste


' Paso 3: Cerrar el libro
LibroOrigen.Close SaveChanges:=False
Set HojaOrigen = Nothing
Set LibroOrigen = Nothing



MiExcel.Quit
Set MiExcel = Nothing
End Sub

un saludo y gracias

Preguntas similare

Leer las respuestas

#1 Héctor Miguel
21/11/2008 - 20:08 | Informe spam
hola, !

1) no es claro si estas "instanciando" excel desde otra aplicacion... o por que utilizas objetos de automatizacion ?
dependiendo de lo que pudieras modificar en este sentido, podria variar alguna propuesta para tu consulta -???-

2) el error que obtienes de que los rangos no son iguales, se debe a lo siguiente:

a) en la linea donde determinas "que copiar" (el paso 2.1):
-> HojaOrigen.Range(Cells(1, 1), Cells(Ultimafila, 7)).Copy
esto equivale a copiar hasta la columna 7 [A1:G-ultimafila]

b) en la linea donde (aparentemente) "ibas" a hacer el pegado (el paso 2.2):
-> Hoja1.Range("A1:i" & Ultimafila)
haces referencia hasta la columna "i" (columna 9, y solo estas copiando 7 columnas)

saludos,
hector.

__ OP __
Mostrar la cita
#2 chiri13
21/11/2008 - 23:04 | Informe spam
gracias por lo 2º

lo primero se refiere a llamar desde un excel a otro excel


"Héctor Miguel" escribió en el mensaje
news:
Mostrar la cita
#3 Héctor Miguel
22/11/2008 - 02:15 | Informe spam
hola, (...) ???

Mostrar la cita
entonces no es necesario "abultar" tu codigo usando objetos de automatizacion ;)

1) inhibe la actualizacion de la pantalla (application.screenupdating = false)
2) abre el otro libro de forma "normal" (workbooks.open rutadebusqueda) y ese libro sera el libro "activo"
3) determina la ultima celda + haz el "copy" del rango correspondiente
4) indica exactamente el rango apropiado de la hoja del libro con la macro para hacer el paste
5) cierra el libro "activo" (el que se abrio con el metodo open)

Sub CommandButton1_Click()
application.screenupdating = false
workbooks.open rutadebusqueda
ultimafila = ' aqui el metodo que prefieras '
range(cells(1, 1), cells(ultimafila, 7)).copy
thisworkbook.worksheets("xyz").range("a1:g" & ultimafila).paste
activeworkbook.close false
End Sub

saludos,
hector.

__ el codigo de tu consulta original __
Mostrar la cita
#4 chiri13
22/11/2008 - 08:29 | Informe spam
fantástico gracias

pensaba que para abrir otro libro era necesario utilizar la automatización
(vengo de access y ahí lógicamente la utilizo para trabajar sobre excel)

muchas gracias una cosilla más a la hucha

un abrazo

"Héctor Miguel" escribió en el mensaje
news:u7%23Cd$
Mostrar la cita
Ads by Google
Search Busqueda sugerida