Copiar hoja (mover) a otro libro con vba

Tengo esta macro que me está dando problemas y no sé como solucionarlo, a ver si alguien me puede ayudar.
sub macro1()
Dim valor as string
ActiveSheet.Range("A1").Select
valor = ActiveCell.Value
carpeta = "Directorio de Origen"
workbooks.open carpeta & valor & ".xlsx" ('selecciono archivo para abrir)
sheets("Hoja1").select ('selecciono la hoja a copiar)
sheets("Hoja1").name=valor ('cambio el nombre de la hoja por el de la celda A1)
activesheet.copy after:=workbooks("archivo destino").sheets(sheets.count -1) ('copia o mueve la hoja al archivo de destino y la coloca al final [es aqui donde me da error])
workbooks.close:=false ('cierro el archivo origen sin preguntar)

1 respuesta

Respuesta
1
Revisá el texto "archivo destino" que sea un nombre válido y que el archivo esté abierto.
Si no es nada de esto indicame el mensaje de error.
Lo 1º agradecer tu respuesta, lo 2º que haciendo pruebas he conseguido colocar la hoja copiada en el ultimo lugar en el archivo de destino (tanto archivodestino como archivoorigen están abiertos), ahora me surge la duda de como puedo cerrar el archivoorigen desde el archivodestino, te copio la rutina y si tienes a bien la depuras o me puedes decir como hacerla yo, gracias de antemano.
sub macro1()
application.screenupdating=false
dim valor as string
activesheet.range("A1").select
valor=activecell.value
carpeta="rutaarchivoorigen"
workbooks.open carpeta & valor &".xls"
sheets("Hoja1").select
sheets("Hoja1").name=valor
activesheet.copy after:=workbooks("Gestion.xlsm").sheets("Hoja2")
activesheet.move after:=sheets(sheets.count)
aqui vendria la parte de la rutina para cerrar el archivoorigen
sheets("Hoja2").select
(*)Notese el cambio que he hecho en la extension del archivo de origen, y si antes ponía en la ultima fila WorkBooks.Close:=False, fue por error, ya que no me cierra el archivoorigen.
Agregá la línea en negrita:
'aqui vendria la parte de la rutina para cerrar el archivoorigen
Workbooks(valor & ".xls").Close False
Sheets("Hoja2").Select
Ahora el libro Activo es el de Gestión.
Nota: Cuando tenés como en este caso, 3 archivos abiertos al mismo tiempo, lo ideal es que vayas guardando en variables los nombres de los mismos, para así luego no tener problemas en identificarlos.
Este sería el orden:
'antes del Workbooks.Open guardá el nombre del libro activo:
libro1 = activeworkbook.name
'luego del Open
libroOrigen=activeworkbook.name   'aunque podés obviar esta línea y luego llamar este libro con la instrucción en negrita que dejá anteriormente
y si necesitaras otra variable para el 3er libro:
libroDestino = "Gestion.xlsm"   'o el contenido de otra celda.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas