The Error
You're working in Excel β opening a file with external links, running a VBA macro, or triggering automation from another app β and suddenly Excel hangs with this dialog:
Microsoft Excel is waiting for another application to complete an OLE action.
Clicking OK dismisses it briefly, but it pops back. Sometimes Excel recovers on its own after 30 seconds. Other times it locks up entirely and you have to force-kill it.
Why This Happens
OLE (Object Linking and Embedding) is the Windows mechanism that lets Excel talk to other applications β Word, PowerPoint, legacy ERP systems, or any COM-registered app. When Excel sends an OLE request and the target doesn't respond within its timeout window, Excel surfaces this dialog instead of silently hanging.
The usual culprits:
- The target application has a modal dialog open (a save prompt, an error box, a UAC elevation dialog) that's blocking its message loop
- A COM add-in in Excel itself is intercepting messages
- DDE links (older Office mechanism) to an application that no longer responds to DDE
- VBA automation code that opens or manipulates Excel from an external process without properly releasing COM objects
- Hardware acceleration causing rendering issues that block the message pump
Step-by-Step Fix
Step 1: Check for Hidden Dialog Boxes
Start with the taskbar. A dialog sitting open in Word or PowerPoint blocks COM communication for the entire Office suite β Excel included.
Press Alt+Tab and look for any Office window with an unresolved dialog. Accept or dismiss it. Automating Excel from an external process? Make sure that process doesn't have an open prompt blocking it either.
Step 2: Disable COM Add-ins
Add-ins frequently cause this. Safe mode tells you immediately whether one is to blame:
excel.exe /safe
Run this from Win+R. No error in safe mode means an add-in is your culprit. To find which one:
- Go to File β Options β Add-ins
- At the bottom, set Manage to COM Add-ins, click Go
- Uncheck all add-ins and click OK
- Re-enable them one at a time, reproducing the error after each
Step 3: Disable DDE for Linked Files
DDE is the older Office protocol for cross-app communication. When Excel tries to contact a source application via DDE and that app is gone or unresponsive, it hangs waiting.
Go to File β Options β Advanced, scroll to General, and check "Ignore other applications that use Dynamic Data Exchange (DDE)".
This stops Excel from sending DDE requests on file open. One side effect: double-clicking an Excel file in Explorer won't work the normal way β you'll need to open files from within Excel instead.
Step 4: Fix VBA Automation Code
Automation code that drives Excel from the outside β Python, C#, or VBA in a different Office app β needs to yield back to Windows periodically. Holding COM references open for too long without yielding is what triggers the OLE dialog.
Bad pattern β holds Excel busy while doing work:
' From an external VBA macro (e.g., in Word)
Dim xl As Object
Set xl = CreateObject("Excel.Application")
xl.Workbooks.Open "C:\data\report.xlsx"
' ... long-running operations without yielding ...
xl.Quit
Fixed pattern β make Excel visible, yield regularly, release objects properly:
Dim xl As Object
Dim wb As Object
Set xl = CreateObject("Excel.Application")
xl.Visible = True ' Keeps the message pump active
xl.DisplayAlerts = False ' Suppresses blocking dialogs
Set wb = xl.Workbooks.Open("C:\data\report.xlsx", UpdateLinks:=0)
' Yield to Windows message loop between heavy operations
DoEvents
Application.Wait Now + TimeValue("00:00:02")
wb.Save
wb.Close False
' Release COM objects explicitly
Set wb = Nothing
xl.Quit
Set xl = Nothing
What each change does:
xl.Visible = Trueβ hidden Excel stalls its own message pump. Making it visible keeps it responsive.UpdateLinks:=0β skips the "update links?" dialog, which would block automation mid-runDoEventsβ yields control so Windows can process queued messages- Setting objects to
Nothingβ releases COM references so Excel exits without leaving a ghost process
Step 5: If Automating from Python (win32com)
Python's win32com hits this error frequently. Same principle: keep Excel visible and always clean up COM objects in a finally block:
import win32com.client
import time
import pythoncom
pythoncom.CoInitialize()
try:
xl = win32com.client.Dispatch("Excel.Application")
xl.Visible = True # Critical: keeps message pump alive
xl.DisplayAlerts = False
wb = xl.Workbooks.Open(
r"C:\data\report.xlsx",
UpdateLinks=0
)
ws = wb.Sheets(1)
ws.Range("A1").Value = "Updated"
time.sleep(1) # Give Excel time to process
wb.Save()
wb.Close(False)
xl.Quit()
finally:
del wb, ws, xl
pythoncom.CoUninitialize()
Step 6: Disable Hardware Graphics Acceleration
Less obvious, but worth trying on RDP sessions and virtual machines. Hardware acceleration can stall Excel's message loop in these environments.
Go to File β Options β Advanced, scroll to Display, and check "Disable hardware graphics acceleration". Restart Excel and test.
Step 7: Kill Hung Background Processes
A previous crash sometimes leaves an orphaned EXCEL.EXE holding the COM lock. Kill it before relaunching:
# PowerShell β kill all Excel processes
Get-Process -Name EXCEL -ErrorAction SilentlyContinue | Stop-Process -Force
# Then relaunch Excel normally
Verify the Fix
- Manual trigger: Open the file or run the automation that previously caused the error. No dialog means the fix worked.
- Automation scripts: Run the script end-to-end and confirm it exits cleanly β no orphaned
EXCEL.EXEin Task Manager afterward. - Task Manager check: After automation finishes, open Task Manager β Details tab. A lingering
EXCEL.EXEmeans COM objects weren't released properly β go back to Step 4.
Quick Reference
- Hidden dialog in another app β
Alt+Tab, dismiss it - Add-in conflict β launch
excel.exe /safe, isolate the bad add-in - DDE links β disable DDE in Advanced Options
- Automation code β set
Visible = True, useDoEvents, release COM objects - Rendering issue β disable hardware graphics acceleration
- Zombie process β kill with PowerShell, relaunch
The Visible = True fix resolves this in about 80% of automation scenarios. Getting the error in interactive Excel rather than from a script? The add-in or DDE path is almost always the answer.

