When This Error Shows Up
You're working in Excel or Outlook, maybe running a VBA macro that calls a COM object, and boom — the error pops up. Or you see it when opening an older Access database. The exact error code is 0x80020001. I've seen it most often after an Office update or a third-party software install that messes with COM registrations.
What's Actually Happening
Windows COM system keeps a list of registered interfaces in the registry. Each interface has a GUID. When your code says "talk to interface X," Windows looks it up. If the GUID isn't there or points to a broken DLL, you get this error. The culprit here is almost always a component that got unregistered during an update or a failed uninstall. Don't waste time blaming your code — it's almost certainly a registration problem.
The Fix: Re-register the COM Objects
Skip messing around with the event viewer or SFC. Just re-register the relevant DLLs and OCX files. Here's what works 9 times out of 10.
- Close all Office apps. Outlook, Excel, everything. Otherwise the DLLs are locked.
- Open an elevated command prompt. Hit Windows key, type cmd, right-click Command Prompt, select Run as administrator.
- Re-register common Office COM libraries. Run these commands one by one.
regsvr32 /u /s scrrun.dll
regsvr32 /s scrrun.dll
regsvr32 /s mscomctl.ocx
regsvr32 /s comctl32.ocx - For Office-specific issues, re-register the Office dlls. Path will vary depending on your Office version. For Office 2016/365/2021:
cd "C:\Program Files (x86)\Microsoft Office\root\Office16"
regsvr32 /s mso.dll
regsvr32 /s mso40ui.dll
regsvr32 /s vbe7.dll - Reboot. Not optional. COM caches load at boot.
What If It Still Fails?
Try these in order. Don't do all at once — test after each.
- Check the Event Viewer. Look under Windows Logs > Application. Filter by Source "ActiveX" or "COM". You'll see which CLSID failed. Search that CLSID in regedit to find the DLL path.
- Re-run the Office repair. Go to Control Panel > Programs > Microsoft Office > Change > Quick Repair. That re-registers everything.
- Delete and recreate the offending component. In VBA, if you're creating an object with
CreateObject("something.ProgID"), make sure that ProgID isn't a typo. Check withGetObjectfirst. - Try with a clean boot. Run
msconfig, selective startup, uncheck all non-Microsoft services. Reboot. If the error goes away, some third-party software is the problem. Add services back one at a time to find it.
If none of that works, you're looking at a deeper issue — maybe a corrupted Windows image. Run DISM /Online /Cleanup-Image /RestoreHealth followed by sfc /scannow. But honestly, 95% of the time the regsvr32 commands above fix it. I've been using them since Windows XP and they still work.