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:
- Press Win + R, type
cmd, and hit Enter to open Command Prompt as admin. - Type
regsvr32 /u [filename](replace [filename] with the actual DLL or OCX file, likeregsvr32 /u mscomctl.ocx). Press Enter. You should see a message saying "DllUnregisterServer succeeded." - Now type
regsvr32 [filename](no /u). Press Enter. You should see "DllRegisterServer succeeded." - If that doesn't work, type
sfc /scannowand press Enter. Let it run—takes 10-15 minutes. - 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.