PDF download Download Article
Make monthly and yearly interactive calendars in Excel
PDF download Download Article

While not known as a calendar program, you can use Excel to create and manage your calendar. If you don't want to create one yourself, you can use a free calendar template or use a Visual Basic (VB) code. You can also take a list of calendar events from a spreadsheet and import them into your Outlook calendar. Here's how to create a calendar in Microsoft Excel using your Windows or Mac computer.

Making a Calendar in Excel

To create a calendar using a template in Excel, click File and select New from Template . Type "calendar" into the search field and select a template. Click Create .

Method 1
Method 1 of 3:

Using a Calendar Template

PDF download Download Article
  1. 1
    Open Microsoft Excel . You should see the Excel home page. If you open an Excel file instead, click File in the top-left corner.
    • Creating a calendar from a template will allow you to create a blank calendar that you can fill in with events. It will not convert any of your data into calendar format. If you want to convert a list of Excel data into an Outlook calendar, see the last section instead.
  2. 2
    Click New . This is in the left panel. On some devices, you may need to click New from Template instead.
    Advertisement
  3. 3
    Type "calendar" into the search bar and press Enter . You can find the search bar below the list of premade templates. Results will load.
  4. 4
    Select a calendar template. Choose one depending on your personal needs. You may want to select a standard calendar format, or an academic calendar, or a weekly schedule planner.
    • When you select a calendar, a pop-up menu will open with its full view and details.
  5. 5
    Click Create . This is the green button. A new file will be created with your new template. [1]
  6. 6
    Set the template to the correct dates. Once the template loads, you'll see your new blank calendar. The date will likely be incorrect, but you can usually change this using the menu that appears when you select the date.
    • Some templates have instructions within the text. You can delete the instructions as you complete them.
    • The process will be a little different depending on the template you are using. Usually you can select the displayed year or month and then click the ▼ button that appears next to it. This will display the options you can pick from, and the calendar will adjust automatically.
    • You can usually set the day the week starts as well by selecting it and choosing a new one.
  7. 7
    Check for any tips. Many templates will have a text box with tips that can inform you on how to change the dates or adjust other settings for the calendar template. You'll need to delete these tip text boxes if you don't want them to appear on your printed calendar.
  8. 8
    Adjust any visuals you'd like to change. You can adjust the look of any of the elements by selecting one and then making changes in the Home tab. You can change the font, color, size, and more just like you would any object in Excel.
  9. 9
    Enter your events. After your calendar is configured correctly, you can begin entering events and information into it. Select the cell you want to add an event to and start typing. If you need to put more than one thing on a single day, you may have to get creative with your spacing.
  10. Advertisement
Method 2
Method 2 of 3:

Using Visual Basic Code

PDF download Download Article
  1. 1
    Open a workbook in Excel. Before you can use Visual Basic codes in Microsoft Excel, you must have the Developer ribbon enabled. [2]
    • To enable the Developer ribbon, click File > Options > Customize Ribbon > Developer > Add > OK .
  2. 2
    Click Developer . This tab is at the top, between View and Help .
  3. 3
    Click Visual Basic . This is in the Code section.
  4. 4
    Click Insert , and then Module . This is at the top. A new window will open where you can paste a code.
  5. 5
    Copy and paste the following code. This goes into the module sheet.
     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 
    
  6. 6
    Click File . This is in the top-left corner of Visual Basic.
  7. 7
    Click Close and Return to Microsoft Excel . Visual Basic will close and apply the code.
  8. 8
    Click Macros . This is in the Code section of the Developer tab.
  9. 9
    Click CalendarMaker . You should see this underneath the Macro name header.
  10. 10
    Click Run . This will run the code and create the calendar in Excel.
  11. 11
    Customize your calendar. A dialog box will open for the calendar's inputs. When prompted, type the month and year for the calendar, and then click OK .
  12. Advertisement
Method 3
Method 3 of 3:

Import Excel Data into Outlook

PDF download Download Article
  1. You can import data from Excel into your Outlook calendar . This can make importing things like work schedules much easier.
  2. It will be a lot easier to import your list into Outlook if your spreadsheet is formatted with the proper headers. Enter the following headers into the first row:
    • Subject
    • Start Date
    • Start Time
    • End Date
    • End Time
    • Description
    • Location
  3. The "Subject" field is the name of the event as it appears on your calendar. You don't need to enter something for every field, but you will need at least a "Start Date" as well as the "Subject."
    • Make sure to enter the date into the standard MM/DD/YY or DD/MM/YY format so that it can be read properly by Outlook.
    • You can make an event that spans multiple days by using the "Start Date" and "End Date" fields.
  4. 4
    Open the "Save As" menu. Click File > Save As . Once you're finished adding events to your list, you can save a copy of it in a format that can be read by Outlook.
  5. 5
    Select "CSV (Comma delimited)" from the file type menu. This is a common format that can be imported into a variety of different programs, including Outlook.
    • If you're importing special characters, select the CSV UTF-8 version instead.
  6. 6
    Click Save . You may need to enter a name and select a location first.
  7. 7
    Open your Outlook calendar. Outlook comes with Office, and you'll generally have it installed if you have Excel installed. When Outlook is open, click the "Calendar" button in the lower-left corner to view your calendar.
  8. 8
    Click the File , then Open & Export . You'll see several options for handling Outlook data.
  9. 9
    Click Import/Export . This will open a new window for importing and exporting data into and out of Outlook.
  10. 10
    Select Import from another program or file . More options will appear.
  11. 11
    Select Comma Separated Values and click Next . You'll be prompted to select the file you want to load from.
  12. 12
    Click Browse and find the CSV file you created in Excel. You should usually be able to find it in your Documents folder if you didn't change the default location in Excel.
  13. 13
    Ensure "Calendar" is selected as the destination folder. It should be selected since you're in the Calendar view in Outlook.
  14. 14
    Click Finish to import the file. Your list will be processed and the events will be added to your Outlook calendar. You can find your events in the correct spaces, with times set according to your list. If you included descriptions, you'll see these after selecting an event.
  15. Advertisement

Community Q&A

Search
Add New Question
  • Question
    What holiday is it on the 21st march 2028?
    Community Answer
    As far as I have found out, the only holiday in March in 2028 is Memorial Day, BUT it's on the 29th.
Ask a Question
      Advertisement

      Tips

      Submit a Tip
      All tip submissions are carefully reviewed before being published
      Name
      Please provide your name and last initial
      Thanks for submitting a tip for review!

      About This Article

      Article Summary X

      1. Open Excel.
      2. Search for a calendar template.
      3. Select a template.
      4. Set the correct dates.
      5. Adjust visuals as needed.
      6. Enter your events.

      Did this summary help you?
      Thanks to all authors for creating a page that has been read 1,093,343 times.

      Is this article up to date?

      Advertisement