0X80020003

Fix DISP_E_MEMBERNOTFOUND (0X80020003) in Windows COM calls

This error means a program tried to use a missing COM object member. Here's the quick fix and why it happens.

You're probably seeing this in Excel, Word, or a custom script

The DISP_E_MEMBERNOTFOUND error (0X80020003) pops up when a program tries to call a method or property on a COM object that doesn't exist. It's a common pain point in VBA macros, PowerShell scripts, and older applications that rely on COM components. Let's fix it.

The real fix: Re-register the COM component

Nine times out of ten, the problem is a corrupted or missing COM registration. Here's how to fix it:

  1. Press Win + R, type cmd, and hit Enter to open Command Prompt as admin.
  2. Type regsvr32 /u [filename] (replace [filename] with the actual DLL or OCX file, like regsvr32 /u mscomctl.ocx). Press Enter. You should see a message saying "DllUnregisterServer succeeded."
  3. Now type regsvr32 [filename] (no /u). Press Enter. You should see "DllRegisterServer succeeded."
  4. If that doesn't work, type sfc /scannow and press Enter. Let it run—takes 10-15 minutes.
  5. After that, restart your computer and test the original operation.

What if you don't know the filename?

If you can't identify which COM object is failing, open Event Viewer (press Win + R, type eventvwr.msc). Go to Windows Logs > Application. Look for errors with the same timestamp as the error. The source will usually name the DLL or OCX file.

Why this works

COM objects are registered in the Windows Registry with GUIDs and class IDs. When registration gets corrupted—often from a partial uninstall, a security update, or a disk cleanup—the program can't find the member (method or property) it expects. Re-registering rebuilds those Registry entries. The sfc /scannow step covers system files that might be missing or corrupted. Simple and effective.

Less common variations

64-bit vs 32-bit mismatch

This is the second most common cause. If your application is 32-bit and runs on a 64-bit Windows, you'll need to use the 32-bit version of regsvr32. It lives in C:\Windows\SysWOW64. Open Command Prompt as admin there (cd C:\Windows\SysWOW64), then run regsvr32 [filename] from that folder.

Missing Visual Basic runtime

Some older VB6 applications need the Microsoft Visual Basic 6.0 Common Controls. Download and install the mscomctl.ocx or comctl32.ocx from Microsoft's official download center. Then register it with regsvr32 as above.

Corrupted VBA project

If you're in an Office app (Excel, Word, Access), the macro itself might reference a member that doesn't exist in the installed version. Open the VBA editor (Alt + F11), go to Tools > References. Look for any checkmarked references with "MISSING" next to them. Uncheck those, then re-add the correct reference from the library list.

Prevention tips

  • Always uninstall software through the Control Panel, not by deleting files. That keeps COM registrations clean.
  • Make a system restore point before installing any app that uses COM components.
  • If you write VBA or PowerShell scripts, test them on a fresh VM first.
  • Run Windows Update regularly—COM registration bugs are sometimes patched.

That's it. The error's annoying but the fix is straightforward. If you're still stuck after these steps, you're probably looking at a deeply corrupted Registry—time for a Windows repair install.

Related Errors in Windows Errors
0X00000566 ERROR_SECRET_TOO_LONG (0x00000566): 3 Fixes for LSA secret over limit 0XC00D1BAC 0XC00D1BAC NS_E_NONSQUAREPIXELMODE_MISMATCH Fix 0X00000988 Fix 0X00000988: Log file missing requested record number 0X00003603 Fix IPsec IKE Kerberos error 0x00003603 fast

Was this solution helpful?

EP
Erropedia Team
Tech Support Editors
The Erropedia editorial team researches and documents real-world tech errors from across Windows, Linux, macOS, networking, databases, cloud platforms, and more. Every solution is reviewed for accuracy and updated as software and systems evolve.