Classic Outlook users who rely on VBA macros or COM add-ins to automate tasks like sending emails, processing calendar items, or managing contacts face a significant gap in the new Outlook for Windows. The new Outlook does not support the Outlook Object Model (OOM) used by classic macros and many third-party add-ins. This article explains the technical reasons for this gap and provides alternative methods to automate workflows in the new Outlook.
The new Outlook is built on a web-based platform that does not expose the same COM interfaces as the classic Win32 client. Microsoft has not ported the OOM to the new architecture. As a result, scripts and add-ins that call Application, Namespace, or other core OOM objects will not run. This article covers several alternatives including Microsoft Graph API, Power Automate, and web add-ins that work with the new Outlook.
You will learn how to identify which automation methods still work in the new Outlook and how to migrate your most common tasks to supported technologies. The focus is on practical steps for business users and IT administrators who need to maintain productivity after switching to the new Outlook.
Key Takeaways: Automating Tasks in New Outlook Without VBA
- Microsoft Graph API: Replaces most OOM operations for sending mail, managing calendars, and accessing contacts using REST calls.
- Power Automate: Provides cloud-based automation flows that trigger on new emails, calendar events, or file changes without writing code.
- Web add-ins (Office.js): Runs inside new Outlook to extend functionality using JavaScript and HTML instead of VBA.
Why the New Outlook Does Not Support the Classic Object Model
The classic Outlook for Windows uses the MAPI subsystem and a COM-based object model that allows external code to control the application. VBA macros run inside the same process and have full access to the OOM, which includes objects like Application, NameSpace, Explorer, and Inspector. Add-ins built with Add-in Express or VSTO also rely on these interfaces.
The new Outlook for Windows is built on the same technology as Outlook on the web (OWA). It uses a web rendering engine and communicates with Exchange Online via REST APIs. This architecture does not expose COM interfaces. Microsoft has stated that the new Outlook will not support VBA macros or COM add-ins. The company recommends using web add-ins built with the Office JavaScript API (Office.js) or cloud-based automation tools instead.
Key Objects That Are Unavailable
The following OOM objects and methods do not work in the new Outlook:
- Application.ActiveExplorer
- NameSpace.Folders
- MailItem.Send
- AppointmentItem.Save
- Inspector.CurrentItem
- COM add-ins registered in the Windows Registry under HKEY_CURRENT_USER\Software\Microsoft\Office\Outlook\Addins
Any script or add-in that calls these or similar objects will produce an error or silently fail. The only exception is that the new Outlook still supports a limited set of COM add-ins that were specifically rewritten for the web platform, but these are rare.
Alternative Methods to Automate Tasks in New Outlook
Three main alternatives exist for users who need to automate Outlook tasks: Microsoft Graph API, Power Automate, and web add-ins. Each method covers different scenarios. The table in the next section compares them directly.
Using Microsoft Graph API
Microsoft Graph is a RESTful API that provides access to mail, calendar, contacts, and tasks in Exchange Online. It works with any programming language or tool that can send HTTP requests. Graph does not require the Outlook client to be running.
- Register an application in Azure Active Directory
Go to the Azure portal, select App registrations, and create a new application. Note the Application (client) ID and Directory (tenant) ID. - Configure API permissions
Under API permissions, add Microsoft Graph delegated permissions such as Mail.Send, Mail.Read, Calendars.ReadWrite, and Contacts.ReadWrite. Grant admin consent if required. - Authenticate and obtain an access token
Use the OAuth 2.0 authorization code flow or client credentials flow to get a token. The token must include the scopes you configured. - Make REST calls to Graph endpoints
For example, to send an email, POST to https://graph.microsoft.com/v1.0/me/sendMail with a JSON body containing the message. To list calendar events, GET https://graph.microsoft.com/v1.0/me/events. - Handle responses and errors
Parse the JSON response. Graph returns HTTP status codes and error objects. Use retry logic for throttled requests.
Graph API is ideal for server-side automation, scheduled tasks, and integration with other business applications. It does not require the user to be signed into Outlook.
Using Power Automate
Power Automate (formerly Microsoft Flow) provides prebuilt connectors for Outlook and Office 365. You can create flows that trigger on new emails, calendar events, or file changes without writing code.
- Open Power Automate
Go to https://make.powerautomate.com and sign in with your work or school account. - Create a new automated flow
Select Create > Automated cloud flow. Choose a trigger such as When a new email arrives (V3) or When an event is created (V3). - Add an action
Click New step and search for Outlook. Select an action like Send an email (V2) or Create a calendar event. Configure the parameters such as recipient, subject, and body. - Test the flow
Click Test, select Manually, and perform the trigger action. Verify that the flow runs and produces the expected result. - Turn on the flow
After testing, set the flow to On. It will run automatically when the trigger condition is met.
Power Automate supports conditions, loops, and parallel branches. It is the best option for business users who are not developers.
Creating Web Add-ins with Office.js
Web add-ins run inside the new Outlook client. They are built with HTML, CSS, and JavaScript using the Office.js library. These add-ins can read and write mail items, calendar events, and contacts, but they cannot access the file system or local resources.
- Set up a development environment
Install Node.js and the Yeoman generator for Office add-ins. Runnpm install -g yo generator-office. - Generate an add-in project
Runyo officeand select Outlook add-in. Choose the manifest type (XML or Teams). Provide a name and description. - Write the add-in code
Edit the JavaScript file to use Office.js APIs. For example,Office.context.mailbox.item.body.setAsyncto modify the email body, orOffice.context.mailbox.item.to.getAsyncto read recipients. - Sideload the add-in
In Outlook, go to Get Add-ins > My add-ins > Custom add-ins > Add from file. Select the manifest XML file from your project. - Publish to AppSource
For production use, submit the add-in to AppSource or deploy it via centralized deployment in the Microsoft 365 admin center.
Web add-ins are the only way to extend the new Outlook client itself with custom UI buttons, task panes, and dialogs. They are limited to actions that the Office.js API supports.
Common Migration Issues and Workarounds
VBA macros that run on startup or send emails automatically
VBA macros that use Application_Startup or SendKeys will not run in the new Outlook. Replace them with a Power Automate flow that triggers on a schedule or on new mail. For sending automated replies, use an Outlook rule with a template in classic Outlook, or use the Graph API to send messages from a server process.
Custom COM add-ins that modify the ribbon or read items
COM add-ins that add buttons to the ribbon or intercept item events must be rewritten as web add-ins. The Office.js API provides ribbon customization through the Office.ribbon object and item reading through Office.context.mailbox.item. Not all COM add-in features have direct equivalents; check the Office.js requirement sets before starting a rewrite.
Scripts that access local PST files or local folders
The new Outlook cannot open PST files at all. If your automation reads data from a PST, you must migrate the data to an Exchange Online mailbox or a SharePoint list. Use the Graph API to access the mailbox content instead of local files. For archives, store them in an Exchange Online archive mailbox.
Comparison of Automation Methods for New Outlook
| Item | Microsoft Graph API | Power Automate |
|---|---|---|
| Skill level required | Developer (REST, OAuth) | Business user (no code) |
| Runs without Outlook open | Yes | Yes |
| Supports sending mail | Yes | Yes |
| Supports reading calendar | Yes | Yes |
| Custom UI inside Outlook | No | No |
| On-premises data access | No (cloud only) | Via on-premises gateway |
| Cost | Included with Microsoft 365 | Included with Microsoft 365 (limited flows) |
Web add-ins are not included in this table because they serve a different purpose: extending the Outlook UI rather than automating server-side tasks. For UI extensions, web add-ins are the only option in the new Outlook.
The new Outlook for Windows does not support VBA macros or COM add-ins. You can automate tasks using Microsoft Graph API, Power Automate, or web add-ins built with Office.js. Graph API is best for developers who need server-side automation. Power Automate is best for business users who want no-code flows. Web add-ins are best for adding custom UI elements to the new Outlook client. Start by identifying your most critical automation tasks and mapping them to one of these three alternatives. For a quick test, try creating a Power Automate flow that sends an email when a specific condition is met.