Yes—you can send email using Excel, most often by combining a contact list with Word mail merge, using an Outlook desktop macro, or building a Power Automate flow. Excel itself does not send email through a worksheet formula; the right method depends on whether you need a one-off message, personalized messages, or a repeatable automated process.
What sending email from Excel means
An Excel workbook can hold recipient addresses, names, order details, or other message content, but it is not an email service. To deliver a message, Excel data must be passed to an email application or service. Common choices are Microsoft Outlook, Word’s mail-merge tools, and Power Automate. A hyperlink can also open a new email draft, but that is different from sending a message automatically.
This distinction matters because the method determines what happens next. Some approaches create a draft for you to review; others can send messages in a batch. Sending may also depend on your Outlook account being configured, your organization’s security policies, and whether the workbook is open on a computer or in a browser.
Choose a method for the job
- One message you will review: Use an email hyperlink or an Outlook macro that displays a draft.
- Personalized messages to a list: Use Word mail merge with an Excel recipient list and Outlook.
- Recurring business process: Consider Power Automate, especially when the data is stored in a supported cloud location.
- Send the workbook itself: Attach it manually in Outlook, or use an approved automation that creates an attachment.
For a small mailing, mail merge is usually easier to inspect than writing code. For a controlled workflow that runs on a schedule or after a defined event, automation may be more suitable. A macro offers flexibility, but it requires more care and is generally tied to desktop Excel on Windows and classic Outlook.
Send personalized email with Word mail merge
Mail merge is useful when each recipient should receive a separate message containing their own details—for example, a meeting reminder addressed by name or a notice showing an individual appointment time. Word reads recipient records from Excel and creates a separate email for each selected record. It is not the same as putting a long list of addresses in the To field.
- In Excel, put one recipient per row. Use clear column headings such as Email, FirstName, and AppointmentDate, and keep the data in a consistent format. Remove blank rows within the list and check that addresses are correct.
- Save and close the workbook. In Word for Microsoft 365 on Windows, open the Mailings tab and choose Start Mail Merge > E-mail Messages.
- Choose Select Recipients > Use an Existing List, select the workbook, and choose the worksheet or table containing the recipient records.
- Write the message in Word. Use Insert Merge Field to add fields such as FirstName where appropriate. Preview several records to catch missing names, awkward spacing, or incorrect dates.
- Choose Finish & Merge > Send E-mail Messages. Select the column containing email addresses, enter the subject line, and choose the desired mail format before confirming.
Mail merge sends individual messages, but it can still produce a large volume of email. Test the process with a small, appropriate list first, and confirm that the intended Outlook account is configured. The exact behavior can vary by Office version and account setup. On Mac, Word also has mail-merge features, but the available commands and email-app integration can differ; check the Mailings ribbon and your organization’s current Microsoft guidance before relying on a batch send.
Create an Outlook draft with VBA
A VBA macro can read cells and create an Outlook message. The example below assumes the worksheet is named Contacts, the recipient address is in A2, the subject is in B2, and the message body is in C2. It displays a draft rather than sending it, so you can inspect the recipient and content before clicking Send.
Sub CreateOutlookDraft()
Dim ws As Worksheet
Dim olApp As Object
Dim olMail As Object
Set ws = ThisWorkbook.Worksheets("Contacts")
' Connect to Outlook if it is already open.
On Error Resume Next
Set olApp = GetObject(, "Outlook.Application")
On Error GoTo 0
' Start Outlook if no running instance was found.
If olApp Is Nothing Then
Set olApp = CreateObject("Outlook.Application")
End If
Set olMail = olApp.CreateItem(0)
With olMail
.To = CStr(ws.Range("A2").Value)
.Subject = CStr(ws.Range("B2").Value)
.Body = CStr(ws.Range("C2").Value)
.Display
End With
Set olMail = Nothing
Set olApp = Nothing
End Sub
In Excel for Microsoft 365 on Windows, open the Visual Basic Editor with Alt+F11, choose Insert > Module, and paste the procedure into the module. On Mac, the Visual Basic Editor shortcut differs by keyboard and Excel settings; use Tools > Macro > Visual Basic Editor if available. This particular example uses Outlook’s Windows COM automation and is not a Mac solution. It also relies on classic Outlook; the new Outlook for Windows does not provide the COM automation model this style of macro uses.
To run the procedure, return to Excel and use Alt+F8 on Windows, select CreateOutlookDraft, and choose Run. On Mac, use Tools > Macro > Macros where available. Save a copy of the workbook before running macros. Macro actions cannot be undone with Ctrl+Z, and organizations may disable or restrict macros. Avoid changing .Display to .Send until the code, recipient selection, and approval process have been carefully verified.
Use an email hyperlink for a simple draft
A mailto hyperlink can open the user’s default email application with an address and, in some cases, a subject or brief body already filled in. In Excel, select a cell and use Insert > Link, then enter a mailto address as the link destination. The person still reviews and sends the message; the link does not silently send email.
This option is handy for a small contact sheet or an action link beside a record. It is less suitable for long messages or complex data because email clients handle prefilled text differently, and mailto links have practical length and character-encoding limits. They also depend on a working default email app. Test the link on the devices and email clients your users actually use.
Automate email with Power Automate
Power Automate can connect a supported data source to an email action, such as sending a message through Microsoft 365 Outlook. A flow might read rows from an Excel table stored in OneDrive for Business or SharePoint, then send a notification when a condition is met. This is often a better fit than a desktop macro when a process needs to run without someone opening Excel.
For an Excel-based flow, format the range as a table and store the workbook in a location the flow can access. Then create a flow in Power Automate, select an appropriate trigger or recurrence, add an action to list or read table rows, and configure the Outlook email action with the relevant columns. The precise connectors and triggers available depend on the account, tenant policies, and licensing. Excel workbooks can also be locked or updated concurrently, so design for errors and avoid having multiple processes write to the same file at once.
Before using a flow for real recipients, test it with controlled addresses and review its run history. Set conditions that prevent duplicate sends, and decide what should happen when an address is missing or a row is incomplete. A cloud flow is not automatically safer or more reliable simply because it is automated; permissions, data access, and monitoring still need attention.
Send the workbook as an attachment
If the goal is to email a spreadsheet rather than use its rows as message data, the simplest approach is usually to create a message in Outlook and attach the saved file. In classic Outlook for Windows, create a new message and choose Attach File, then select the workbook. Excel also offers sharing options, but sharing a link is not the same as attaching a copy: a link may give recipients access to a live file, depending on its permissions.
Think about whether recipients should edit the original, see a snapshot, or receive no workbook at all. A link to a shared file can reduce duplicate versions, but check the sharing scope before sending. An attachment is a separate copy that can become outdated and may contain hidden sheets, comments, or personal data. Review the workbook before distributing it.
Common problems and practical fixes
- Outlook does not open: Confirm that a supported desktop Outlook app is installed and configured, and check whether your organization blocks automation. A macro that depends on COM is not compatible with the new Outlook for Windows.
- Mail merge uses the wrong fields: Check the selected worksheet or table, column headings, and first data row. Reconnect the recipient list if the workbook structure changed after Word selected it.
- Dates or numbers look wrong: Preview the merged message. Values can display differently from their Excel cell formatting, so consider preparing a clean text column for the exact wording you want to send.
- Messages go to the wrong people: Validate the email column and test with a small set. Do not assume a sorted list or filtered worksheet automatically represents the intended recipients.
- A macro is blocked or fails: Review the workbook’s macro status and your organization’s policy rather than lowering security settings broadly. Check that the sheet name and cell references in the code match the workbook.
Also distinguish between a message being created and a message being delivered. A draft can be visible in Outlook without having been sent, and a sent message can still be rejected or filtered by the recipient’s mail system.
Privacy, security, and sending limits
Recipient lists are personal or business data. Share the workbook only with people who need access, and do not expose every recipient address by placing a mailing list in the To or Cc field. Mail merge typically sends separate messages, which helps avoid that particular disclosure, but it does not excuse sending to an incorrect or unauthorized list.
Check your organization’s rules on bulk email, external recipients, and approved storage. Microsoft 365 accounts and mail systems can impose sending or recipient limits, and administrators may apply additional restrictions. There is no single safe volume that applies to every account. For newsletters or large public campaigns, use an approved bulk-email service with consent management and unsubscribe handling rather than treating a spreadsheet as a mailing-list platform.
Finally, inspect attachments and merged fields for confidential information. Use a test recipient before a real batch, and keep a clear record of who approved the message and which data was used when the email is part of a business process.
Frequently Asked Questions
Can Excel send an email without Outlook?
Excel does not have a built-in worksheet command that sends email by itself. Power Automate or another approved service can send through a connected account, while an Excel hyperlink opens an email draft in the recipient’s configured application.
Can I send an email to every address in an Excel column?
Yes. Word mail merge can use an Excel list to create separate messages, or a carefully designed flow can process table rows. Check the list, test a small batch, and verify your organization’s sending rules before sending to everyone.
Can an Excel formula send an email?
No standard Excel formula sends an email. Formulas can prepare text or create a mailto hyperlink, but sending requires an email application, automation, or service.
Will an Outlook VBA macro work with new Outlook?
The Outlook COM automation approach shown here requires classic Outlook for Windows. New Outlook does not expose that COM automation model, and Outlook desktop automation is not a Mac method. Consider Power Automate or mail merge where supported.
Can Excel email a workbook automatically?
A macro or flow can be designed to attach a workbook, but that requires explicit setup and permission. For a one-time message, attaching the file manually is easier to review and reduces the chance of an unattended process sending the wrong version.
Related
- Excel Data Validation Methods: Rules, Lists, and Tips
- Excel Data Validation List from a Table: How to Set It Up
- Data Validation in Word: Build Forms and Drop-Down Lists
Try it: the Column Letter to Number: aA is 27, XFD is 16,384. Converts both ways.
More in VBA & macros
- Excel VBA InputBox: Ask for User InputIn Excel VBA, use InputBox to display a simple prompt and collect a response, or use Application.InputBox when…
- Excel VBA Like Operator: Pattern Matching ExplainedYes. In Excel VBA, the Like operator compares a string with a pattern, letting you test for text…
- VBA Add Worksheet After the Last SheetTo add a worksheet after the last sheet tab in Excel, use Worksheets.Add with the last item in…
- Excel VBA INDEX: Return Values from a RangeIn Excel VBA, “INDEX” usually means Excel’s INDEX worksheet function, called as Application.WorksheetFunction.Index(...) or Application.Index(...) to return an…
- Excel VBA: Find the Last Row with Data in a ColumnTo find the last populated row in column A with Excel VBA, use ws.Cells(ws.Rows.Count, "A").End(xlUp).Row, where ws is…
- Excel Macros in Google Sheets: What Works?No: Google Sheets cannot run Excel VBA macros, even when you open an Excel workbook that contains them.…
Sources: Function behaviour and menu paths: Microsoft Support documentation for Excel. Method & sources
Spotted an error in this guide? Let us know.