Buen día, quisiera me ayuden para hacer una macro, para copiar varias hojas de un libro a uno nuevo.

Quisiera me ayuden para hacer una macro, no conozco mucho de ellas o el lenguaje para hacerlas.
Tengo un libro en Excel 2007 que tiene 7 hojas, quiero que tres de las hojas de este libro sean copiadas exactamente igual a un nuevo libro (mismo diseño y nombre de hojas), este nuevo libro quisiera guardarlo en una ubicación determinada con el mismo nombre del primero solo que ha esta copia agregarle al final del nombre la fecha del día de ayer.

1 Respuesta

Respuesta
3

Te puedo ayudar, pero necesito saber que 3 hojas de esas 7 son las quieres copiar. Necesito saber el nombre exacto de las hojas. ¿Van a ser siempre las mismas?

Gracias por la ayuda,

Los nombres son:

Socios por día

Membresías por día

CC Norte

CC Majadas

North Manager's Recap Report

Majadas manager's Recap Report

ClubCo Manager's Recap Report

Las que necesito copiar son las ultimas 3:

North Manager's Recap Report
Majadas manager's Recap Report
ClubCo Manager's Recap Report

Siempre son las mismas.

Muchas gracias nuevamente.

Te mando la solución. Esta macro te creará un nuevo archivo con esas 3 pestañas y te lo dejará grabado dentro de la misma carpeta donde tengas el archivo original.

Sub copiar_hojas()
'Por Luismondelo
dia = Day(Date) - 1
mes = Month(Date)
año = Year(Date)
mio = ActiveWorkbook.Name
nuevo = Left(mio, InStr(mio, ".") - 1)
ruta = ActiveWorkbook.Path
Workbooks.Add
otro = ActiveWorkbook.Name
Workbooks(mio). Activate
Sheets("North Manager's Recap Report").Copy after:=Workbooks(otro). Sheets(Workbooks(otro). Sheets. Count)
Workbooks(mio). Activate
Sheets("Majadas manager's Recap Report").Copy after:=Workbooks(otro). Sheets(Workbooks(otro). Sheets. Count)
Workbooks(mio). Activate
Sheets("ClubCo Manager's Recap Report").Copy after:=Workbooks(otro). Sheets(Workbooks(otro). Sheets. Count)
ActiveWorkbook.SaveAs ruta & "\" & nuevo & dia & "_" & mes & "_" & año
End Sub

recuerda finalizar y puntuar

Buen dia Luis, muchas gracias, esta muy buena, lo quiero molestar con dos detalles mas, usted me indica si es posible:

1-Para que, en el nuevo libro solo aparezcan los valores y no las formulas que utilizo, como puedo hacer?

2-En el nuevo libro, aparesen tres hojas antes de las que se pegan, estas en blanco, hay forma de eliminarlas con la macro?

Los nombres son: Hoja1, Hoja2, Hoja3.

Saludos y muchas gracias nuevamente.

En ese caso la macro quedaría así con las mismas directrices del post anterior:

Sub copiar_hojas()
'Por Luismondelo
Application.DisplayAlerts = False
dia = Day(Date) - 1
mes = Month(Date)
año = Year(Date)
mio = ActiveWorkbook.Name
nuevo = Left(mio, InStr(mio, ".") - 1)
ruta = ActiveWorkbook.Path
Workbooks.Add
otro = ActiveWorkbook.Name
Workbooks(mio). Activate
Sheets("North Manager's Recap Report").Copy after:=Workbooks(otro). Sheets(Workbooks(otro). Sheets. Count)
Workbooks(mio). Activate
Sheets("Majadas manager's Recap Report").Copy after:=Workbooks(otro). Sheets(Workbooks(otro). Sheets. Count)
Workbooks(mio). Activate
Sheets("ClubCo Manager's Recap Report").Copy after:=Workbooks(otro). Sheets(Workbooks(otro). Sheets. Count)
ActiveWorkbook.SaveAs ruta & "\" & nuevo & dia & "_" & mes & "_" & año
Sheets("hoja1").Delete
Sheets("hoja2").Delete
Sheets("hoja3").Delete
For Each hoja In ActiveWorkbook.Sheets
hoja.Select
ActiveSheet.UsedRange.Select
Selection.Copy
Selection.PasteSpecial Paste:=xlValues
Next
Application.CutCopyMode = False
End Sub

recuerda finalizar y puntuar

Muchas gracias Luis, ultima consulta, si quisiera guardar el nuevo archivo en otra ubicación, como puedo hacer?

Saludos y muchas gracias!!!

Ahora la macro es así: te preguntará por la carpeta destino y recuerda que tendrás que ponerle el path correctamente, por ejemplo:

c:\carpeta1\carpeta2\

Siempre acabará con una barra \

Sub copiar_hojas()
'Por Luismondelo
Application.DisplayAlerts = False
dia = Day(Date) - 1
mes = Month(Date)
año = Year(Date)
mio = ActiveWorkbook.Name
nuevo = Left(mio, InStr(mio, ".") - 1)
ruta = inputbox("introduzca la ruta de destino")
Workbooks.Add
otro = ActiveWorkbook.Name
Workbooks(mio). Activate
Sheets("North Manager's Recap Report").Copy after:=Workbooks(otro). Sheets(Workbooks(otro). Sheets. Count)
Workbooks(mio). Activate
Sheets("Majadas manager's Recap Report").Copy after:=Workbooks(otro). Sheets(Workbooks(otro). Sheets. Count)
Workbooks(mio). Activate
Sheets("ClubCo Manager's Recap Report").Copy after:=Workbooks(otro). Sheets(Workbooks(otro). Sheets. Count)
ActiveWorkbook.SaveAs ruta & "\" & nuevo & dia & "_" & mes & "_" & año
Sheets("hoja1").Delete
Sheets("hoja2").Delete
Sheets("hoja3").Delete
For Each hoja In ActiveWorkbook.Sheets
hoja.Select
ActiveSheet.UsedRange.Select
Selection.Copy
Selection.PasteSpecial Paste:=xlValues
Next
Application.CutCopyMode = False
End Sub

ok, ultimas dos consulta y en esta oportunidad es verdad.

1.Si tengo una dirección exacta en donde quiero guardar el nuevo libro en donde la agrego?
La dirección es C:\DATA\Manager's Recap diario

2.Si quiero que el nuevo libro se cierre automáticamente como lo hago?
Creo que con esto termina una macro muy interesante, y muy de mucha utilidad, es la primera vez que utilizo o consulto en línea, la verdad muy buena experiencia gracias a tu persona, te agradezco mucho, adicional a experto eres un maestro.


Saludos y gracias.

Entonces tu macro definitiva es esta:

Sub copiar_hojas()
'Por Luismondelo
Application.DisplayAlerts = False
dia = Day(Date) - 1
mes = Month(Date)
año = Year(Date)
mio = ActiveWorkbook.Name
nuevo = Left(mio, InStr(mio, ".") - 1)
ruta = "C:\DATA\Manager's Recap diario\"
Workbooks.Add
otro = ActiveWorkbook.Name
Workbooks(mio). Activate
Sheets("North Manager's Recap Report").Copy after:=Workbooks(otro). Sheets(Workbooks(otro). Sheets. Count)
Workbooks(mio). Activate
Sheets("Majadas manager's Recap Report").Copy after:=Workbooks(otro). Sheets(Workbooks(otro). Sheets. Count)
Workbooks(mio). Activate
Sheets("ClubCo Manager's Recap Report").Copy after:=Workbooks(otro). Sheets(Workbooks(otro). Sheets. Count)
ActiveWorkbook.SaveAs ruta & "\" & nuevo & dia & "_" & mes & "_" & año
Sheets("hoja1").Delete
Sheets("hoja2").Delete
Sheets("hoja3").Delete
For Each hoja In ActiveWorkbook.Sheets
hoja.Select
ActiveSheet.UsedRange.Select
Selection.Copy
Selection.PasteSpecial Paste:=xlValues
Next
Application.CutCopyMode = False
activeworkbook.close false
End Sub

te mando un saludo.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas