How to Email an Excel Report Automatically Every Week
October 15, 2026 · 4 min read
Every Monday someone exports last week's numbers, opens Outlook, attaches the file, types the same message and sends it to the same people. It takes ten minutes, and it gets forgotten the week that person is on vacation.
Windows can do this for you. This guide compares the main options, then walks through a free do-it-yourself method using PowerShell and Task Scheduler, both built into Windows.
First: where does the file come from?
Automatic emailing works best when the report file already appears in a folder on its own. Many accounting, sales, point-of-sale and CRM programs can export to a folder, and some can do it on a schedule. If yours can't, the export stays a manual step, but you can still automate everything after it.
If the export creates a new file each time, like sales-2026-10-12.csv, the automation should pick the newest file in the folder rather than a fixed file name.
Your options
| Approach | Good for | Watch out for |
|---|---|---|
| Power Automate | Offices on Microsoft 365 with files in OneDrive or SharePoint | Depends on your Microsoft 365 plan; more setup; files need to be in the cloud |
| A do-it-yourself PowerShell script | Simple "attach this file and send" jobs | You maintain the script; no preview, table or error alerts unless you build them |
| A ready-made tool | Repeating reports for people who'd rather not maintain a script | A one-time cost |
The do-it-yourself method
This uses classic Outlook on the same PC to send the email, so there are no passwords to store.
1. Save a script. Create a folder like C:\Scripts, open Notepad, paste this in, change the folder, file pattern and address, and save it as C:\Scripts\send-report.ps1:
# Find the newest matching export
$file = Get-ChildItem "C:\Exports" -Filter "sales*.csv" |
Sort-Object LastWriteTime -Descending | Select-Object -First 1
if (-not $file) { exit 1 }
# Send it through classic Outlook
$outlook = New-Object -ComObject Outlook.Application
$mail = $outlook.CreateItem(0)
$mail.To = "team@yourbusiness.com"
$mail.Subject = "Weekly sales - " + (Get-Date -Format "MMMM d, yyyy")
$mail.Body = "Hi team,`n`nThis week's sales report is attached."
$null = $mail.Attachments.Add($file.FullName)
$mail.Send()
2. Test it. Open PowerShell and run:
powershell -NoProfile -ExecutionPolicy Bypass -File C:\Scripts\send-report.ps1
Send it to yourself first. If nothing arrives, check Outlook's Outbox and Sent Items.
3. Schedule it. In the same PowerShell window, this creates a task that runs every Monday at 8:00 AM:
schtasks /Create /TN "Weekly sales email" /SC WEEKLY /D MON /ST 08:00 /TR "powershell -NoProfile -ExecutionPolicy Bypass -File C:\Scripts\send-report.ps1"
You can see, run or delete it in Task Scheduler from the Start menu.
Things to know
- The PC has to be on and signed in at the scheduled time. Locked is fine.
- Classic Outlook only. The "new Outlook" app can't be controlled by scripts. If yours has a "New Outlook" switch turned on, turn it off to use classic Outlook.
- Outlook may ask for permission ("A program is trying to send an email") if Windows thinks your antivirus is out of date.
- Without Outlook, PowerShell can send through an email server (SMTP) instead, using an app password, but Microsoft is switching off password-based sending for Microsoft 365 accounts, so classic Outlook is the safer route for those offices.
- It sends whatever is in the folder, even an empty or week-old export. Checking for that is up to you.
When a script isn't enough
The basic script attaches a file. In practice, reports often need a little more:
- the key numbers in the email itself, so people don't have to open the attachment
- totals for columns like Amount or Balance
- skipping the send when the export is empty or didn't update, and telling you instead
- a preview before anything goes out
- several reports on different schedules, maintained by someone who isn't comfortable editing scripts
A ready-made option: Report Emailer
Report Emailer does all of that, still using only what's built into Windows. Point it at a file or a folder of exports and it sends a tidy email with your message, a table of the data, totals for the columns you choose, and the file attached. It reads Excel files without Excel installed, sends through classic Outlook or Gmail and other email services, and runs daily, weekly or monthly. If the PC was off at the scheduled time, it sends as soon as you're back. A free settings form means nobody has to edit code.
It runs on Windows 10 and 11 and is a one-time purchase from $29 for one business, with a consultant license for bookkeepers and IT providers setting it up for clients.
See an example report email, or ask us a question about your report.