Create Outlook appointments for every nn workday (2024)

One big complaint about Outlook recurrence patterns is that there is not a pattern for Every xx weekday (Monday - Friday). You can create appointments for specific days of the week, but the every xx days pattern includes Saturday and Sunday.

The solution: a macro that copies the appointment details to a new appointment, using a function to check the day of the week for each date. When a date falls on Saturday or Sunday, it jumps ahead to Monday.

Updated March 31 2017. Now using Chip Pearson's Workday2 function to skip Workdays, so it is now a proper "every xx weekday" macro. (Yes, it's an Excel macro but since the Office programs use pretty much the same functions, it works in Outlook too.) It will also check your default calendar for all day events marked busy to use in the Holiday array. It does not check recurring events!

To use, you need to create the first appointment and save it, then run the macro. Enter the number of days between appointments and the number of appointments you need to create. The macro copies the fields from the first appointment and creates new appointments every xx days. Note: these are not recurring appointments, but individual appointments.

It will work with either opened appointments or selected appointments thanks to the GetCurrentItem function.

To use, press Alt+F11 to open the VB Editor. Expand the folders on the left and right click to Insert a new module. Paste the following code into a module. Create a new appointment and save it, then run the macro.

As written, the macro skips Saturday and Sunday (65). If your workweek has other days off, add the values listed in Enum EDaysOfWeek and change the value in nextDate = Workday2(currentDate, NumOfDays + 1, 65) and in nextDate = Workday2(nextDate, NumOfDays + 1, 65).

 Dim strAllDayOOF As String''''''''''''''''''''''''''''''''''''''''''''''''''''' From http://www.cpearson.com/excel/BetterWorkday.aspx' EDaysOfWeek' Days of the week to exclude. This is a bit-field' enum, so that its values can be added or OR'd' together to specify more than one day. E.g,.' to exclude Tuesday and Saturday, use' (Tuesday+Saturday), or (Tuesday OR Saturday)'''''''''''''''''''''''''''''''''''''''''''''''''''''Enum EDaysOfWeek Sunday = 1 ' 2 ^ (vbSunday - 1) Monday = 2 ' 2 ^ (vbMonday - 1) Tuesday = 4 ' 2 ^ (vbTuesday - 1) Wednesday = 8 ' 2 ^ (vbWednesday - 1) Thursday = 16 ' 2 ^ (vbThursday - 1) Friday = 32 ' 2 ^ (vbFriday - 1) Saturday = 64 ' 2 ^ (vbSaturday - 1)End EnumPublic Sub CreateSeriesofAppt() Dim objAppt As Outlook.AppointmentItem Dim objAppt2 As Outlook.AppointmentItem Dim NumOfDays As Long Dim NumAppt As Long Dim nextDate As Date Dim nextAppt Dim currentDate As Date' Get the Holdiay list GetHolidays' Don't forget the GetCurrentItem function at' http://slipstick.me/e8mio Set objAppt = GetCurrentItem() If TypeName(objAppt) <> "AppointmentItem" Then MsgBox "You need to select and appointmnet" ElseNumOfDays = InputBox("How many days between appointments?")NumAppt = InputBox("How many appointments in the series?")currentDate = Format(objAppt.Start, "mm/dd/yyyy")ApptStartTime = Format(objAppt.Start, "hh:mm:ss AM/PM")' Using Function from' From http://www.cpearson.com/excel/BetterWorkday.aspx' 65 = skip Sat/SunnextDate = Workday2(currentDate, NumOfDays + 1, 65)For x = 1 To NumApptSet objAppt2 = Session.GetDefaultFolder(olFolderCalendar).Items.Add(olAppointmentItem)apptStartDateTime = nextDate & " " & ApptStartTime With objAppt' I'm using a limited number of fields, you can' add others. objAppt2.Subject = .Subject & " " & x objAppt2.Location = .Location objAppt2.Body = .Body objAppt2.Start = apptStartDateTime objAppt2.Duration = .Duration objAppt2.Categories = .Categories End With On Error Resume Next objAppt2.Save 'objAppt2.DisplaynextDate = Workday2(nextDate, NumOfDays + 1, 65)Debug.Print nextApptNext xEnd If Set objAppt = Nothing Set objAppt2 = Nothing End Sub' From http://www.cpearson.com/excel/BetterWorkday.aspx'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' Workday2' This is a replacement for the ATP WORKDAY function. It' expands on WORKDAY by allowing you to specify any number' of days of the week to exclude.' StartDate The date on which the period starts.' DaysRequired The number of workdays to include' in the period.' ExcludeDOW The sum of the values in EDaysOfWeek' to exclude. E..g, to exclude Tuesday' and Saturday, pass Tuesday+Saturday in' this parameter.' Holidays an array or range of dates to exclude' from the period.' RESULT: A date that is DaysRequired past' StartDate, excluding holidays and' excluded days of the week.' Because it is possible that combinations of holidays and' excluded days of the week could make an end date impossible' to determine (e.g., exclude all days of the week), the latest' date that will be calculated is StartDate + (10 * DaysRequired).' This limit is controlled by the RunawayLoopControl variable.' If DaysRequired is less than zero, the result is #VALUE. If' the RunawayLoopControl value is exceeded, the result is #VALUE.'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' From http://www.cpearson.com/excel/BetterWorkday.aspxFunction Workday2(StartDate As Date, DaysRequired As Long, _ ExcludeDOW As EDaysOfWeek, Optional Holidays As Variant) As VariantDim N As Long ' generic counterDim C As Long ' days actually workedDim TestDate As Date ' incrementing dateDim HNdx As Long ' holidays indexDim CurDOW As EDaysOfWeek ' day of week of TestDateDim IsHoliday As Boolean ' is TestDate a holiday?Dim RunawayLoopControl As Long ' prevent infinite loopingDim V As Variant ' For Each loop variable for Holidays.Holidays = Split(strAllDayOOF, ",")If DaysRequired < 0 Then ' day required must be greater than or equal ' to zero. Workday2 = CVErr(xlErrValue) Exit FunctionElseIf DaysRequired = 0 Then Workday2 = StartDate Exit FunctionEnd IfIf ExcludeDOW >= (Sunday + Monday + Tuesday + Wednesday + _ Thursday + Friday + Saturday) Then ' all days of week excluded. get out with error. Workday2 = CVErr(xlErrValue) Exit FunctionEnd If' this prevents an infinite loop which is possible' under certain circ*mstances.RunawayLoopControl = DaysRequired * 10000N = 0C = 0' loop until the number of actual days worked (C)' is equal to the specified DaysRequired.Do Until C = DaysRequired N = N + 1 TestDate = StartDate + N CurDOW = 2 ^ (Weekday(TestDate) - 1) If (CurDOW And ExcludeDOW) = 0 Then ' not excluded day of week. continue. IsHoliday = False ' test for holidays If IsMissing(Holidays) = False Then For Each V In Holidays If V = TestDate Then IsHoliday = True ' TestDate is a holiday. get out and ' don't count it. Exit For End If Next V End If If IsHoliday = False Then ' TestDate is not a holiday. Include the date. C = C + 1 End If End If If N > RunawayLoopControl Then ' out of control loop. get out with #VALUE Workday2 = CVErr(xlErrValue) Exit Function End IfLoop' return the resultWorkday2 = StartDate + NEnd FunctionSub GetHolidays()' Check for all day events on calendar' marked busy/off/tentative' skips recurring events' To be included, holidays need to be marked with a busy state, not Free Dim CalItems As Outlook.Items Dim ResItems As Outlook.Items Dim sFilter As String Dim iNumRestricted As Integer Dim itm As Object ' Use the selected calendar folder Set CalFolder = Session.GetDefaultFolder(olFolderCalendar) Set CalItems = CalFolder.Items ' Sort all of the appointments based on the start time CalItems.Sort "[Start]" CalItems.IncludeRecurrences = False ' Set dates sFilter = "[Start] >= '" & Date & "' And [AllDayEvent] = 'True' And [BusyStatus] <> '0' AND [IsRecurring] = 'False'" Set ResItems = CalItems.Restrict(sFilter) iNumRestricted = 0 'Loop through the items in the collection. For Each itm In ResItems iNumRestricted = iNumRestricted + 1 ' Create list of dates strAllDayOOF = strAllDayOOF & Format(itm.Start, "mm/dd/yyyy") & "," Next Debug.Print strAllDayOOF ' clean the string for the arraystrAllDayOOF = Left(strAllDayOOF, Len(strAllDayOOF) - 1) Set ResItems = Nothing Set CalItems = Nothing Set CalFolder = NothingEnd Sub

Create Outlook appointments for every nn workday (2024)

FAQs

Create Outlook appointments for every nn workday? ›

A common request is how to make recurring appointments for every x number of workdays. Unfortunately Outlook does not offer this type of recurring option. You can use a third party add-in, WS:Repeat Appointment II, to create recurrences not supported by Outlook.

How do I schedule a meeting every weekday in Outlook? ›

Open Outlook and go to the Calendar view. Click on the "New Meeting" button to create a new meeting. In the "Meeting" tab, click on the "Recurrence" button. In the "Appointment Recurrence" window, select "Weekly" from the "Pattern" drop-down menu.

How do I repeat every workday in Outlook? ›

Select the start and end times of your appointment in the dropdown boxes. Select how often you want the appointment to reoccur by clicking the radio button next to one of the following options: Daily: If the appointment recurs every day, every few days, or every weekday.

How do I schedule every other day in Outlook? ›

Schedule with Outlook on the web
  1. Select the calendar.
  2. Select New event.
  3. Enter the details, location, start time and end time.
  4. If this is a meeting, add the names or email addresses of the people you want to invite. ...
  5. To make this a recurring meeting, select Repeat, and choose how often.
  6. Select Save or Send.

How do I make a recurring event all day in Outlook? ›

Set an event to recur

In the Options section of the ribbon, click Recurrence. Click the recurrence frequency — Daily, Weekly, Monthly, Yearly — that you want, and then select the options for the frequency.

How do I automatically schedule a meeting in Outlook? ›

Use the Scheduling Assistant
  1. From the Inbox, select New Items > Meeting or in the Calendar, select New Meeting. ...
  2. Add attendees in the To box.
  3. In the Subject box, enter a description of the meeting or event.
  4. Select Scheduling Assistant from the Ribbon. ...
  5. Times that your attendees are busy are shown in dark blue.

How do I schedule an email to send every week in Outlook? ›

Go to your Calendar in Outlook. Click on the "New Appointment" or "New Event" button to create a new event. In the event window, enter a title for the event, such as "Send Weekly Email." Set the date and time for the event to occur on the first Thursday morning.

Does workday integrate with Outlook? ›

Schedule a demo, to find out how the Workday to Microsoft Outlook integration helps boost your business' efficiency.

How do I set my work schedule in Outlook? ›

Select Settings > Calendar > Work hours and location. Select checkboxes for the days you want to set. Use the dropdowns to select your work hours and your location each day. Share which building you're working from and where you'll be sitting.

How do I schedule a recurring task in Outlook? ›

Create a Recurring Task
  1. In an open task window, click the Recurrence button on the Task tab.
  2. Select a recurrence pattern and specify its parameters. Daily: Tasks that recur every day or every workday. ...
  3. Specify range of recurrence. ...
  4. Click OK.
  5. Click Save & Close.

How do I create a recurring meeting in Outlook? ›

Make a meeting recurring

Select Meeting > Recurrence. Note: Use the keyboard shortcut Ctrl+G to schedule the meeting to repeat regularly. Choose the options for the recurrence pattern you want, and then select OK. Note: When you add a recurrence pattern to a meeting request, the Meeting tab changes to Meeting Series.

Does Outlook have a daily planner? ›

View your plan and tasks in Outlook

Under Other calendars, select your plan. Select a Planner task to see a quick view. To see more details, select the View event arrow in the upper right. Here you can see dates, progress, and a checklist summary.

How to schedule a team meeting every alternate day? ›

If you want to create a recurring meeting — a series of meeting which repeats on a regular basis — select the drop-down menu next to "Does not repeat." Choose from the recurrence options, such as "Every weekday (Mon - Fri)," "Daily," "Weekly," etc. Or select "Custom" for a unique meeting pattern.

What is the difference between an event and an appointment in Outlook? ›

In Calendar, an appointment is an activity that you enter in your diary, such as weekly sales meetings on Monday mornings or a lunch date with friends. An event is similar to an appointment except that it lasts for a minimum of one entire day.

How do I create a recurring event? ›

Set up a new repeating event
  1. On your computer, open Google Calendar.
  2. In the top left, click Create .
  3. Add the event title and any other details.
  4. Next to "Does not repeat," click the Down arrow .
  5. Choose how often you want the event to repeat, and when you want the event that repeats to end.
  6. At the top right, click Save.

How to setup a recurring meeting in Outlook? ›

Make a meeting recurring

Select Meeting > Recurrence. Note: Use the keyboard shortcut Ctrl+G to schedule the meeting to repeat regularly. Choose the options for the recurrence pattern you want, and then select OK. Note: When you add a recurrence pattern to a meeting request, the Meeting tab changes to Meeting Series.

How do I set up weekdays in Outlook? ›

To change your Outlook Calendar to show you are working different hours
  1. Open Microsoft Outlook.
  2. Select File > Options > Calendar.
  3. On this screen you can set: start and end time for work hours. work week - which days you work. ...
  4. Select OK to save your changes.
May 30, 2023

How do I create a weekly recurring task in Outlook? ›

In an open task window, click the Recurrence button on the Task tab. Select a recurrence pattern and specify its parameters. Daily: Tasks that recur every day or every workday. Weekly: Tasks that recur on the same day(s) of the week, such as a report due every Friday or a payroll due every other Thursday.

References

Top Articles
Latest Posts
Article information

Author: Maia Crooks Jr

Last Updated:

Views: 6391

Rating: 4.2 / 5 (63 voted)

Reviews: 86% of readers found this page helpful

Author information

Name: Maia Crooks Jr

Birthday: 1997-09-21

Address: 93119 Joseph Street, Peggyfurt, NC 11582

Phone: +2983088926881

Job: Principal Design Liaison

Hobby: Web surfing, Skiing, role-playing games, Sketching, Polo, Sewing, Genealogy

Introduction: My name is Maia Crooks Jr, I am a homely, joyous, shiny, successful, hilarious, thoughtful, joyous person who loves writing and wants to share my knowledge and understanding with you.