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. 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. This is in the left panel. On some devices, you may need to click New from Template instead.
    Advertisement
  3. You can find the search bar below the list of premade templates. Results will load.
  4. Choose one depending on your personal needs. You may want to select a standard calendar format, 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. This is the green button. A new file will be created with your new template. [1]
  6. 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. 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. 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. 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. 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. This tab is at the top, between View and Help .
  3. This is in the Code section.
  4. This is at the top. A new window will open where you can paste a code.
  5. 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. This is in the top-left corner of Visual Basic.
  7. Visual Basic will close and apply the code.
  8. This is in the Code section of the Developer tab.
  9. You should see this underneath the Macro name header.
  10. This will run the code and create the calendar in Excel.
  11. 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. Importing your list into Outlook will be much easier 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 Outlook can read it properly.
    • You can make an event that spans multiple days by using the "Start Date" and "End Date" fields.
  4. Click File > Save As . Once you're finished adding events to your list, you can save a copy of it in a format that Outlook can read.
  5. 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. You may need to enter a name and select a location first.
  7. 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. You'll see several options for handling Outlook data.
  9. This will open a new window for importing and exporting data into and out of Outlook.
  10. More options will appear.
  11. You'll be prompted to select the file you want to load from.
  12. You should usually be able to find it in your Documents folder if you didn't change the default location in Excel.
  13. It should be selected since you're in the Calendar view in Outlook.
  14. 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,095,084 times.

      Reader Success Stories

      • Kathy M.

        Jul 18, 2018

        "I have 3 managers in my office with 3 different schedules. This will allow me to import their data into one ..." more
        Rated this article:
      Share your story

      Is this article up to date?

      Advertisement