Autor Tema: VBA Copia de un Libro de Excel a otro (copiar un workbook y pegarlo en otro)  (Leído 39070 veces)

loadingApersona

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 3
    • Ver Perfil
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.
« Última modificación: 03 de Septiembre 2016, 18:31 por Ogramar »

Ogramar

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2660
    • Ver Perfil
Re:VBA Copia de un Libro de Excel a otro.
« Respuesta #1 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

 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".