Foros aprenderaprogramar.com

Aprender a programar => C, C++, C#, Java, Visual Basic, HTML, PHP, CSS, Javascript, Ajax, Joomla, MySql y más => Mensaje iniciado por: loadingApersona en 30 de Agosto 2016, 13:07

Título: VBA Copia de un Libro de Excel a otro (copiar un workbook y pegarlo en otro)
Publicado por: loadingApersona en 30 de Agosto 2016, 13:07
Hola a todos. Estoy haciendo unas pruebas en este lenguaje, hace nada que he empezado a trastear con él. Hoy se me está resistiendo un poco el código con el que busco crear una macro con la que tomar datos de un libro de Excel y pasarlos a otro.

Código: [Seleccionar]
Sub copiaDatos()
'
' copiaDatos Macro
'
' Keyboard Shortcut: Ctrl+j
'
    Workbooks.Open "C:\Users\Usuario\Desktop\16\08Agosto\Ciudad\Archivo.xlsm"
    Workbooks("Archivo.xlsm").Worksheets("Hoja1").Range("L12").Copy Destination:=Workbooks("segundoArchivo.xlsm").Worksheets("Hoja1").Range("B11")
    Workbooks("Archivo.xlsm").Close savechanges:=False
   

End Sub

El caso es que me sale un error que pone:
Citar
Run-time error '9':

Subscript out of range

He leído la ayuda que me ofrecen pero no me queda claro el error que tengo. Gracias por su atención.
Título: Re:VBA Copia de un Libro de Excel a otro.
Publicado por: Ogramar en 03 de Septiembre 2016, 18:31
Buenas

Puedes probar con esto:

Código: [Seleccionar]
Sub copiarDatosDeArchivo1A2()
Dim x As Workbook
Dim y As Workbook

'## Abrimos ambos ficheros:
Set x = Workbooks.Open("C:\Users\Usuario\Desktop\16\08Agosto\Ciudad\Archivo1.xlsm")
Set y = Workbooks.Open("C:\Users\Usuario\Desktop\16\08Agosto\Ciudad\Archivo2.xlsm")

'Copiamos los datos que queramos del primer libro de excel:
x.Sheets("Hoja1").Range("A1").Copy

'Pegamos en el otro libro:
y.Sheets("Hoja1").Range("A1").PasteSpecial

'Cerramos el fichero:
x.Close

End Sub

Si en vez de pegar una parte quieres pegar todos los datos podrías hacer:

Código: [Seleccionar]
With x.Sheets("Hoja1").UsedRange
    'Pegar a la segunda hoja:
    y.Sheets("Hoja1").Range("A1").Resize( _
        .Rows.Count, .Columns.Count) = .Value
End With

Y otra forma de hacerlo:

Código: [Seleccionar]
Sub otraForma()
Dim x As Workbook
Dim y As Workbook
Dim vals as Variant

'## Abrimos ambos ficheros:
Set x = Workbooks.Open("C:\Users\Usuario\Desktop\16\08Agosto\Ciudad\Archivo1.xlsm")
Set y = Workbooks.Open("C:\Users\Usuario\Desktop\16\08Agosto\Ciudad\Archivo2.xlsm")

'Guardar la información en una variable:
vals = x.Sheets("Hoja1").Range("A1").Value

'Trasladar el contenido de la variable a otra hoja:
y.Sheets("Hoja1").Range("A1").Value = vals

'Cerrar x:
x.Close

End Sub


Salu2