Macro de Excel

Hola,
Voy directo al asunto.
Necesitaría ayuda sobre una macro para excel.
Necesito una macro que cree 3 hojas por día del mes en el mismo libre (total unas 90 o 93 hojas por libro) y que las renombre siguiendo el siguiente patrón (la primera hoja por ejemplo la del día 1 de este mes sería Mañana 1-6-03 ; la siguiente Tarde 1-6-03 ; y la última Noche 1-6-03 luego la del día 2 Mañana 2-6-03 y así con todas), si me puedes ayudar te lo agradeceré

2 Respuestas

Respuesta
1
Solamente necesitamos decirle a Excel lo siguiente:
- Número de Mes y año a incluir (por ejemplo 05-03). He supuesto que está en la celda "E20".
- Número de días del Mes (por ejemplo 31, teniendo en cuenta que Febrero en años bisiestos tiene 29 días). He supuesto que está en la celda "C18".
**** CÓDIGO DE LA MACRO ***
Sub Crear_Hojas()
'
' Macro1 Macro
' Macro grabada el 18/06/2003 por cmcaminam
'
'Almacenamos en una variable el valor de la celda "E20", que
'es el número de mes y el año que se debe incluir en el
'nombre de las hojas.
Nombre = Range("E20").Value
'Generamos un bucle. El bucle significa:
'
'Desde 1 hasta el valor que aparezca en la celda "C18" (número de días del mes), repite
'lo que se incluye en el interior del bucle.
'
'El bucle se incremente de una en una unidad.
'
For i = 1 To Range("C18").Value
Sheets("Hoja1").Select
Sheets.Add
Application.ActiveSheet.Name = "Mañana " & i & Nombre
Sheets("Hoja1").Select
Sheets.Add
Application.ActiveSheet.Name = "Tarde " & i & Nombre
Sheets("Hoja1").Select
Sheets.Add
Application.ActiveSheet.Name = "Noche " & i & Nombre
Sheets("MENU GENERAL").Select
Next i
End Sub
En cualquier caso, he diseñado este modelo que, creo, resuelve tu problema. Si te interesa, necesito tu e-mail para hacértelo llegar.
Respuesta
1
Bueno varias cosas... le puse a la macro algo para que el usuario seleccione el mes, siempre lo va a hacer con el año actual y eso es todo.
Sub Agregar_Hojas()
' Macro grabada el 14/06/2003 por CMERA
Dim Mes As Integer
Dim dia As Integer
Dim valido As Boolean
Dim Nombre As String
Dim Fecha As Date
Dim Jornada(1 To 3) As String
Jornada(1) = "Mañana"
Jornada(2) = "Tarde"
Jornada(3) = "Noche"
Do While valido = False
respuesta = InputBox("Digite el mes", "Mes a evaluar")
If IsNumeric(respuesta) _
And respuesta >= 1 And respuesta <= 12 Then
valido = True
Mes = respuesta
ElseIf respuesta = "" Then
valido = True
Exit Sub
End If
Loop
dia = 1
Fecha = DateSerial(Year(Date), Mes, dia)
Do While Month(Fecha) = Mes
For i = 1 To 3
Worksheets.Add.Move after:=Worksheets(Worksheets.Count)
Nombre = Jornada(i) & " " & Day(Fecha) & _
"-" & Month(Fecha) & "-" & Right(Year(Fecha), 2)
Sheets(Worksheets.Count).Name = Nombre
Next i
dia = dia + 1
Fecha = DateSerial(Year(Date), Mes, dia)
Loop
End Sub
Como comentario adicional (perdón por ser tan metido) me parece que esa manera de almacenar información no es muy práctica pues los libros al tener tantas hojas se vuelven lentos y ocupan bastante espacio.
¿No habría alguna manera de almacenar la misma información en una única hoja colocando columnas adicionales con el día y la jornada? Si el asunto es de presentación o de impresión se puede hacer una macro que traiga los datos de la base seleccionando el día y la Jornada (es una sugerencia)
Bueno, espero que no te moleste mi comentario, te agradeceré finalizar la pregunta con una valoración acorde con la calidad y oportunidad de la respuesta.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas