Sistava

How to Automate Emails From Excel: Mail Merge and Flows

How-to — — by Mahmoud Zalt

Send personalised email from a spreadsheet with Word mail merge or Power Automate, with exact steps, the attachment limit and what breaks at scale.

The spreadsheet already has everything: the names, the addresses, the amount owed, the renewal date. What it does not have is a Send button. So you end up copying one row at a time into an email, twenty three times, on a Friday afternoon.

This guide covers the three documented routes with the exact clicks, then tells you honestly which one to pick for your situation and where each one falls over. Skip the third if you have never seen code, because you will not need it.

Which method should I use to send emails from Excel?

Pick by how often you need it. A one time send to a list goes through Word mail merge. Something that has to run every Monday without you goes through Power Automate. A VBA macro is only worth it when the logic per row is genuinely complicated and lives on one Windows machine.

MethodSetup effortRuns without youMain catch
Word mail mergeAbout fifteen minutesNo, you press send each timeMicrosoft states you cannot add attachments and cannot CC or BCC
Power AutomateAn hour or two the first timeYes, on a schedule or a triggerYour data must be a real Excel table stored online
VBA macroDepends entirely on the codeOnly when the file is openWindows desktop only, and someone has to maintain it

One thing applies to all three. Clean the sheet before you automate anything, because automation multiplies whatever is in it. Microsoft specifically warns to format ZIP and postal code columns as text so leading zeroes survive, and to make sure there is an email address for every intended recipient.

How do I send personalised emails from Excel with mail merge?

You write the message once in Word, point it at your Excel file, drop in merge fields where the personal details go, and let Word send one individual message per row through your mail program. Microsoft states you need a MAPI compatible email program such as Outlook installed for this to work.

Word mail merge from an Excel list, step by step

  1. Prepare the spreadsheet — One header row, one row per recipient, and a column of email addresses with an address for every person you intend to reach. Microsoft advises formatting ZIP and postal codes as text so leading zeroes are not stripped.
  2. Start the merge in Word — Open a new Word document and go to Mailings, then Start Mail Merge, then E-mail Messages.
  3. Connect your list — Go to Mailings, then Select Recipients, and choose your Excel file as the data source. Save the Word document once it is connected.
  4. Write the message with merge fields — Type the body once. Where a personal detail belongs, use Mailings, then Insert Merge Field, or Mailings, then Greeting Line. You can format the inserted field afterwards like any other text.
  5. Preview every record — Go to Mailings, then Preview Results, and step forward and back through the records. This is where you catch the empty cell that produces Dear , and the name in all capitals.
  6. Send — Go to Finish and Merge, then Send E-mail Messages. In the To box pick your email address column, type the subject, choose HTML or Plain text, choose whether to send all records or a range, then select OK.

The limitations are documented and they matter. Microsoft states that Word sends an individual message to each email address, that you cannot CC or BCC other recipients, and that you cannot add attachments, although you can include links.

So invoices, contracts and reports cannot ride along as files. The standard workaround is to put each document somewhere shared and merge in a per row link column instead, which is often better anyway because you can see who opened it.

How do I send email from Excel automatically on a schedule?

With Power Automate. You build a flow that starts on a recurrence trigger, reads your spreadsheet with the Excel Online action List rows present in a table, loops through the rows, and sends a message with the Office 365 Outlook action Send an email. Nobody has to be at a keyboard.

There is one requirement that catches almost everyone. The action reads Excel tables, not sheets, so your data has to be formatted as an actual table using Insert then Table in Excel. Rows sitting loose in cells return nothing at all, and the flow succeeds while sending zero emails.

A Power Automate flow that emails from a spreadsheet

  1. Put the file online and make it a table — Save the workbook to OneDrive or SharePoint so the Excel Online connector can reach it. Select your data and use Insert, then Table, so the rows are addressable.
  2. Start the flow with a trigger — Use the recurrence trigger for anything on a timer, such as every Monday at eight. Other triggers work too if the send should follow an event rather than a clock.
  3. Read the rows — Add the Excel Online action List rows present in a table, point it at the file and pick the table by name.
  4. Filter before you loop — Only some rows usually deserve an email. Filter the list first, on a due date, a status column or an amount, so the loop is not deciding on every pass.
  5. Send one message per row — Inside an apply to each loop, add Send an email and build the body with dynamic content from the current row. To send from a shared address, Microsoft documents Send an email from a shared mailbox instead.
  6. Test on two rows — Point the flow at a copy of the sheet with two rows, one of them yours, and run it once. Never test a loop on the live list.

What about a summary email instead of one per row?

Often what you actually want is one message to yourself listing everything that needs attention, not forty messages to forty people. Microsoft documents this pattern explicitly as a daily digest email with a summary table.

The documented shape is to use the Data Operation Select action to build a table with the columns you want, pass that into the Create HTML Table action, and drop the result into the body of a Send an email action. It is three actions and it replaces a report somebody currently builds by hand every morning.

Microsoft's documentation also covers sending an email with voting options, where recipients answer with buttons. Worth knowing about, with one warning from the docs: you have to capture and store the responses somewhere yourself, or you will never know how people voted.

Where the spreadsheet approach falls apart

Every method above sends what the row says. None of them can tell that this particular customer already paid yesterday, that the last email to this address bounced, or that the reply someone sent last week changes what you should say now.

That is the real ceiling, and it is not a technical one. A spreadsheet is a snapshot. The moment the world moves and the sheet does not, your automation keeps confidently sending the wrong thing to real people, and it does it faster than you ever could by hand.

This is where the approach changes rather than the tool. On Sistava you hire an AI Employee and describe the job in ordinary sentences: read this sheet every Monday, work out who is overdue, check whether they already replied, and draft the reminders for me to approve.

There is no trigger to wire, no loop to configure and no merge field to get wrong. It reads the spreadsheet and the mailbox together, so a customer who paid on Friday does not get chased on Monday. Anything about money stays on draft until you say send, which is exactly where a bulk sender should stop.

Before you send to a real list

Four checks that prevent the messages you cannot take back. None of them take more than a few minutes and all of them have saved somebody a very bad afternoon.

That last one is the honest test of whether a spreadsheet send is the right idea at all. If the replies are the point, the sending was never the hard part, and an AI Employee from Sistava that reads the answers as they come back is a better fit than a bigger merge.

FAQ

Can I attach a file to a mail merge from Excel?

No. Microsoft states plainly that with a Word mail merge you cannot add attachments, although you can include links. The usual workaround is to store each document somewhere shared, put the link in a column of the spreadsheet, and merge that column into the message body.

Why does Power Automate say there are no rows in my Excel file?

Almost always because the data is not formatted as an Excel table. The List rows present in a table action reads tables, so if your data is sitting in plain cells the action finds nothing and the flow succeeds having sent nothing. Select your data in Excel, use Insert then Table, then point the action at the table by name.

Do I need Outlook installed to send a mail merge?

For the Word route, yes. Microsoft states you need a MAPI compatible email program such as Outlook installed for Finish and Merge to send. Power Automate does not need anything installed because it runs in the cloud and sends through your Microsoft 365 account.

Can I CC or BCC someone on a mail merge?

Not from Word. Microsoft's documentation states that Word sends an individual message to each email address and that you cannot CC or BCC other recipients. If you need a copy of every message, a Power Automate flow can add extra recipients per row, or you can add yourself as a row in the list.

How do I send an email from Excel automatically every week?

Use Power Automate with a recurrence trigger. The flow runs on your schedule, reads the sheet with the Excel Online List rows present in a table action, and sends with the Send an email action. The workbook has to live in OneDrive or SharePoint so the connector can read it.

Is VBA still worth using for emails from Excel?

Only in narrow cases. A macro runs on one Windows machine, needs Outlook available, needs macros enabled, and stops the day the person who wrote it leaves. If the file has to be shared or the send has to happen while nobody is at that desk, a cloud flow is the more sensible choice.

Sources