Copiar datos de un Excel a otro con nombre variable

Soy totalmente nueva en esto de las macros y ando un poco perdida..

Tengo un excel de trabajo en el que tengo que ir copiando datos de varios ficheros excel adicionales. El problema viene al tener que usar estos ficheros todos los meses, con el correspondiente cambio en el nombre de los ficheros.

El nombre del excel de trabajo no me da problemas, pero el de los excel con los datos si. He conseguido que la macro abra el fichero al indicar su nombre en una celda de una de las pestañas del excel de trabajo. El problema lo tengo a la hora de cambiar de un fichero al otro, ya que el fichero original lo identifica como "ThisWorkbook" pero al tener que volver al fichero con los datos sigue apareciendo el nombre del fichero y no consigo sustituirlo por la celda con el nombre del fichero, que está en una pestaña concreta.

He subrayado en negrita el título que habría que sustituir por el de la celda correspondiente.

Espero haberme explicado bien y me podáis ayudar.


Sub Macro1()
'
' Macro1 Macro
'

' Sheets("anotaciones").Select
Range("A2:Y8000").Select
Selection.ClearContents
Workbooks.Open ThisWorkbook.Path & Worksheets("Instrucciones").Range("f11")
Sheets("DatosAgregados").Select
Range("A11:Y9532").Select
Selection.Copy
ThisWorkbook.Activate
Sheets("anotaciones").Select
Range("A2").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Windows("FICHERO CON DATOS.xlsm").Activate
ActiveWindow.Close
Range("A2").Select
Sheets("Macros").Select
Range("A1").Select


1 respuesta

Respuesta
1

H o l a y bienvenida a Todoexpertos!

Prueba lo siguiente, puse algunos comentarios para explicar las líneas del código.

Sub Macro1()
  Dim wb1 As Workbook, wb2 As Workbook
  Dim sh11 As Worksheet, sh12 As Worksheet, sh13 As Worksheet, sh21 As Worksheet
  '
  Application.ScreenUpdating = False
  '
  'Establecer el libro de trabajo y sus hojas
  Set wb1 = ThisWorkbook
  Set sh11 = wb1.Sheets("Instrucciones")
  Set sh12 = wb1.Sheets("anotaciones")
  Set sh13 = wb1.Sheets("Macros")
  sh12.Range("A2:Y8000").ClearContents
  '
  'Abrir libro 2 y establcer su hoja
  Set wb2 = Workbooks.Open(wb1.Path & "\" & sh1.Range("F11"))
  Set sh21 = Sheets("DatosAgregados")
  '
  'Copiar y pegar
  sh21.Range("A11:Y9532").Copy
  sh12.Range("A2").PasteSpecial xlPasteValues
  wb2.Close False
  MsgBox "Fin"
End Sub

Déjame saber cualquier duda que tengas.

Prueba con el siguiente código, hice unos pequeños cambios:

Sub Macro1()
  Dim wb1 As Workbook, wb2 As Workbook
  Dim sh11 As Worksheet, sh12 As Worksheet, sh13 As Worksheet, sh21 As Worksheet
  '
  Application.ScreenUpdating = False
  Application.DisplayAlerts = False
  '
  'Establecer el libro de trabajo y sus hojas
  Set wb1 = ThisWorkbook
  Set sh11 = wb1.Sheets("Instrucciones")
  Set sh12 = wb1.Sheets("anotaciones")
  Set sh13 = wb1.Sheets("Macros")
  sh12.Range("A2:Y8000").ClearContents
  '
  'Abrir libro 2 y establcer su hoja
  Set wb2 = Workbooks.Open(wb1.Path & "\" & sh11.Range("F11"))
  Set sh21 = Sheets("DatosAgregados")
  '
  'Copiar y pegar
  sh21.Range("A11:Y9532").Copy
  sh12.Range("A2").PasteSpecial xlPasteValues
  wb2.Close False
  MsgBox "Fin"
End Sub

!Muchísimas Gracias!

Efectivamente, estableciendo las dimensiones iniciales a los libros y pestañas, funciona perfectamente.

Saludos! 

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas