logo
search
Send & Receive Issues

Fix VBA Email Appears in Sent Items But Is Not Delivered

Elise WilliamsElise Williams Oct 21, 2026 868 views

Question details

Outlook messages generated and sent via a VBA script are not reaching the recipients, despite appearing in the Sent Items folder or getting stuck in the Outbox.

How to Fix VBA Email Appears in Sent Items but Is Not Delivered
Product
Microsoft Outlook
Device & OS
not provided
Scenario
Automating email dispatch using VBA macros, where the script successfully processes the code but the emails fail to actually leave the local network.
Observed behavior
The VBA code executes without error, and emails move to the Outbox or Sent Items, but they are never actually delivered to the recipient addresses because Outlook was started in the background.
Before you start

Ensure your computer has an active internet connection and verify that the recipient email addresses defined in your VBA script are valid and properly formatted.

Solution 1Recommended

Ensure Outlook is Running Before Executing VBA

Keep the Outlook application open and running in the foreground before triggering your VBA macro to prevent messages from stalling in the Outbox.

When a VBA script initiates an email but Outlook is closed, the script forces Outlook to run as a background process. Background instances of Outlook often do not trigger the automatic Send/Receive protocols, causing emails to get stuck in the Outbox indefinitely.

1
Open Outlook Manually

Launch Microsoft Outlook from your desktop, taskbar, or Start menu.

2
Verify Connection Status

Look at the bottom right corner of the Outlook window to ensure it says 'Connected' or 'Connected to: Microsoft Exchange'.

3
Execute the VBA Script

Return to your source application (such as Excel or Access) and run your VBA macro.

4
Check the Outbox

Go back to Outlook and check the Outbox folder. It should be empty, confirming that the emails have been actively delivered to the server.

Ensure Outlook is Running Before Executing VBA
Consistent Delivery: Keeping Outlook open ensures that all background COM add-ins and network protocols required for immediate message delivery are fully active.
Free Microsoft Office alternative

Try WPS Office for Seamless Macro Execution and Office Tasks

If you frequently encounter automation limitations or background process issues with Microsoft Office, consider switching to WPS Office. It provides a highly compatible, lightweight environment for your documents, spreadsheets, and macros.

  1. 1. Download the Installer: Visit the official WPS Office website and click the Free Download button.
  2. 2. Install the Software: Run the downloaded installer and follow the on-screen prompts to set up the software.
  3. 3. Open Your Macro Files: Launch WPS Spreadsheet and open your existing macro-enabled files to continue your work without interruption.
Fully compatible with Microsoft Excel, Word, and PowerPoint file formats.Robust support for VBA macros, enabling complex data automation.Lightweight design that launches quickly and consumes minimal system resources.Free to download with a familiar interface for an effortless transition.
microsoft office alternative - wps office

Frequently Asked Questions

Why do my VBA emails get stuck in the Outlook Outbox?

This usually happens when the VBA macro initiates an invisible, background instance of Outlook. Without the full application interface running, Outlook's automatic send/receive process isn't triggered, leaving emails queued in the Outbox.

Does using '.Display' instead of '.Send' fix the VBA email delivery issue?

Yes, changing '.Send' to '.Display' in your VBA code forces the email window to appear on the screen. You can then click 'Send' manually, which bypasses the Outbox queue issue, though this method requires manual user interaction for every email generated.

How can I check if Outlook is running using VBA before sending an email?

You can use the 'GetObject(, "Outlook.Application")' function in your VBA script. If this function throws an error (Error 429), it means Outlook is not currently running, allowing you to display a message box prompting the user to open Outlook first.