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
-
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.
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:
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.
-
Buenas
Puedes probar con esto:
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:
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:
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