¿Cómo crear un calendario mensual o anual en Excel?
A veces, necesita crear en Excel un calendario de un mes o año específico. ¿Cómo hacerlo rápidamente? Este tutorial le muestra trucos para generar con rapidez un calendario mensual o anual en Excel.
Crear un calendario mensual o anual mediante una plantilla de Excel
Crear un calendario mensual mediante VBA
Cree fácilmente un calendario mensual o anual con Calendario Perpetuo
Crear un calendario mensual o anual mediante una plantilla de Excel
En Excel, puedes usar una plantilla de calendario para crear un calendario mensual o anual.
1. En Excel 2010/2013, haga clic en Archivo > Nuevo; en Excel 2007, haga clic en Botón de Office > Nuevo; luego, en la sección derecha de la ventana emergente, escriba calendario en el motor de búsqueda. Vea la captura de pantalla:
En Excel 2010/2013

En Excel 2007

2. Pulse Intro; a continuación, aparecerán varios tipos de calendarios en la ventana. Seleccione el tipo de calendario que necesite y haga clic en Descargar (o Crear) en el panel derecho. Vea la captura de pantalla:

Ahora se ha creado un calendario en un nuevo libro de trabajo. Consulte la captura de pantalla:

Crear un calendario mensual mediante VBA
A veces, necesita crear un calendario de un solo mes para una fecha concreta, como enero de 2015. Con el método anterior, puede resultar algo complicado encontrar una plantilla así. Por eso, le presentamos un código VBA que le permitirá generar fácilmente un calendario mensual específico.
1. Pulse las teclas Alt + F11 para abrir la ventana de Microsoft Visual Basic para Aplicaciones; haga clic en Insertar > Módulo y, a continuación, copie y pegue el siguiente código VBA en la ventana.
VBA: crea un calendario mensual.
Sub CalendarMaker()
' Unprotect sheet if had previous calendar to prevent error.
ActiveSheet.Protect DrawingObjects:=False, Contents:=False, _
Scenarios:=False
' Prevent screen flashing while drawing calendar.
Application.ScreenUpdating = False
' Set up error trapping.
On Error GoTo MyErrorTrap
' Clear area a1:g14 including any previous calendar.
Range("a1:g14").Clear
' Use InputBox to get desired month and year and set variable
' MyInput.
MyInput = InputBox("Type in Month and year for Calendar ")
' Allow user to end macro with Cancel in InputBox.
If MyInput = "" Then Exit Sub
' Get the date value of the beginning of inputted month.
StartDay = DateValue(MyInput)
' Check if valid date but not the first of the month
' -- if so, reset StartDay to first day of month.
If Day(StartDay) <> 1 Then
StartDay = DateValue(Month(StartDay) & "/1/" & _
Year(StartDay))
End If
' Prepare cell for Month and Year as fully spelled out.
Range("a1").NumberFormat = "mmmm yyyy"
' Center the Month and Year label across a1:g1 with appropriate
' size, height and bolding.
With Range("a1:g1")
.HorizontalAlignment = xlCenterAcrossSelection
.VerticalAlignment = xlCenter
.Font.Size = 18
.Font.Bold = True
.RowHeight = 35
End With
' Prepare a2:g2 for day of week labels with centering, size,
' height and bolding.
With Range("a2:g2")
.ColumnWidth = 11
.VerticalAlignment = xlCenter
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlCenter
.Orientation = xlHorizontal
.Font.Size = 12
.Font.Bold = True
.RowHeight = 20
End With
' Put days of week in a2:g2.
Range("a2") = "Sunday"
Range("b2") = "Monday"
Range("c2") = "Tuesday"
Range("d2") = "Wednesday"
Range("e2") = "Thursday"
Range("f2") = "Friday"
Range("g2") = "Saturday"
' Prepare a3:g7 for dates with left/top alignment, size, height
' and bolding.
With Range("a3:g8")
.HorizontalAlignment = xlRight
.VerticalAlignment = xlTop
.Font.Size = 18
.Font.Bold = True
.RowHeight = 21
End With
' Put inputted month and year fully spelling out into "a1".
Range("a1").Value = Application.Text(MyInput, "mmmm yyyy")
' Set variable and get which day of the week the month starts.
DayofWeek = WeekDay(StartDay)
' Set variables to identify the year and month as separate
' variables.
CurYear = Year(StartDay)
CurMonth = Month(StartDay)
' Set variable and calculate the first day of the next month.
FinalDay = DateSerial(CurYear, CurMonth + 1, 1)
' Place a "1" in cell position of the first day of the chosen
' month based on DayofWeek.
Select Case DayofWeek
Case 1
Range("a3").Value = 1
Case 2
Range("b3").Value = 1
Case 3
Range("c3").Value = 1
Case 4
Range("d3").Value = 1
Case 5
Range("e3").Value = 1
Case 6
Range("f3").Value = 1
Case 7
Range("g3").Value = 1
End Select
' Loop through range a3:g8 incrementing each cell after the "1"
' cell.
For Each cell In Range("a3:g8")
RowCell = cell.Row
ColCell = cell.Column
' Do if "1" is in first column.
If cell.Column = 1 And cell.Row = 3 Then
' Do if current cell is not in 1st column.
ElseIf cell.Column <> 1 Then
If cell.Offset(0, -1).Value >= 1 Then
cell.Value = cell.Offset(0, -1).Value + 1
' Stop when the last day of the month has been
' entered.
If cell.Value > (FinalDay - StartDay) Then
cell.Value = ""
' Exit loop when calendar has correct number of
' days shown.
Exit For
End If
End If
' Do only if current cell is not in Row 3 and is in Column 1.
ElseIf cell.Row > 3 And cell.Column = 1 Then
cell.Value = cell.Offset(-1, 6).Value + 1
' Stop when the last day of the month has been entered.
If cell.Value > (FinalDay - StartDay) Then
cell.Value = ""
' Exit loop when calendar has correct number of days
' shown.
Exit For
End If
End If
Next
' Create Entry cells, format them centered, wrap text, and border
' around days.
For x = 0 To 5
Range("A4").Offset(x * 2, 0).EntireRow.Insert
With Range("A4:G4").Offset(x * 2, 0)
.RowHeight = 65
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlTop
.WrapText = True
.Font.Size = 10
.Font.Bold = False
' Unlock these cells to be able to enter text later after
' sheet is protected.
.Locked = False
End With
' Put border around the block of dates.
With Range("A3").Offset(x * 2, 0).Resize(2, _
7).Borders(xlLeft)
.Weight = xlThick
.ColorIndex = xlAutomatic
End With
With Range("A3").Offset(x * 2, 0).Resize(2, _
7).Borders(xlRight)
.Weight = xlThick
.ColorIndex = xlAutomatic
End With
Range("A3").Offset(x * 2, 0).Resize(2, 7).BorderAround _
Weight:=xlThick, ColorIndex:=xlAutomatic
Next
If Range("A13").Value = "" Then Range("A13").Offset(0, 0) _
.Resize(2, 8).EntireRow.Delete
' Turn off gridlines.
ActiveWindow.DisplayGridlines = False
' Protect sheet to prevent overwriting the dates.
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, _
Scenarios:=True
' Resize window to show all of calendar (may have to be adjusted
' for video configuration).
ActiveWindow.WindowState = xlMaximized
ActiveWindow.ScrollRow = 1
' Allow screen to redraw with calendar showing.
Application.ScreenUpdating = True
' Prevent going to error trap unless error found by exiting Sub
' here.
Exit Sub
' Error causes msgbox to indicate the problem, provides new input box,
' and resumes at the line that caused the error.
MyErrorTrap:
MsgBox "You may not have entered your Month and Year correctly." _
& Chr(13) & "Spell the Month correctly" _
& " (or use 3 letter abbreviation)" _
& Chr(13) & "and 4 digits for the Year"
MyInput = InputBox("Type in Month and year for Calendar")
If MyInput = "" Then Exit Sub
Resume
End Sub El código VBA procede de esta página web https://support.microsoft.com/en-us/kb/150774
2. Pulse la tecla F5 o el botón Ejecutar, y aparecerá un cuadro de diálogo que le pedirá que introduzca el mes específico para el que desea crear un calendario. Vea la captura de pantalla:

3. Haga clic en Aceptar. Ahora se ha creado un calendario de enero de 2015 en la hoja de cálculo actual.

Sin embargo, los métodos anteriores presentan algunas limitaciones. Por ejemplo, si desea crear un calendario que abarque desde enero hasta mayo de una sola vez, tendría que repetir el proceso cinco veces con los dos métodos descritos. Ahora le presentamos una herramienta práctica para resolverlo de forma rápida y sencilla.
Cree fácilmente un calendario mensual o anual con Calendario Perpetuo
Calendario Perpetuo es una de las potentes utilidades incluidas en Kutools para Excel y le permite crear rápidamente un calendario mensual o anual en Excel de una sola vez.
1. Haga clic en KUTOOLS PLUS > Hoja de cálculo > Calendario Perpetuo.
2. En el cuadro de diálogo emergente, especifique el intervalo de meses para el que desea crear el calendario y haga clic en Crear. Vea la captura de pantalla:

A continuación, se crea un nuevo libro de trabajo con cinco hojas de calendario. Consulte la siguiente captura de pantalla:

Consejo:
Si solo desea crear un calendario de un mes específico, basta con seleccionar ese mismo mes tanto en el campo «De» como en el campo «Hasta» del cuadro de diálogo «Cuadro de texto».
Haga clic aquí para obtener más información sobre Calendario Perpetuo
Las mejores herramientas de productividad para Office
Potencie sus habilidades en Excel con Kutools para Excel y experimente una eficiencia como nunca antes.Kutools para Excel ofrece más de 300 funciones avanzadas para aumentar su productividad y Ahorrar tiempo.Haga clic aquí para obtener la función que más necesita...
Office Tab aporta una interfaz con pestañas a Office y hace que su trabajo sea mucho más fácil
- Active la edición y lectura con pestañas en Word, Excel, PowerPoint, Publisher, Access, Visio y Project.
- Abra y cree varios documentos en nuevas pestañas dentro de la misma ventana, en lugar de hacerlo en ventanas separadas.
- ¡Aumente su productividad en un 50 % y elimine cientos de clics del ratón cada día!
Todos los complementos de Kutools en un solo instalador.
Kutools for Office es la suite que incluye complementos para Excel, Word, Outlook y PowerPoint, además de Office Tab Pro, ideal para equipos que trabajan en distintas aplicaciones de Office.
- Suite integral— complementos para Excel, Word, Outlook y PowerPoint + Office Tab Pro
- Un instalador, una licencia— configuración en minutos (compatible con MSI)
- Rendimiento mejorado en conjunto— productividad optimizada en todas las aplicaciones de Office
- Prueba gratuita de 30 días con todas las funciones— sin registro ni tarjeta de crédito
- La mejor relación calidad-precio— ahorre frente a la compra individual de complementos