VBA & Macro Problems

Fix Class Not Registered Error for 32-Bit DLL in Excel VBA

John WilsonJohn Wilson Oct 28, 2026 870 views

Question details

The user is encountering a 'Class not registered' error in Excel VBA when attempting to instantiate an object from a 32-bit DLL component.

How to Fix 'Class Not Registered' Error for a 32-Bit DLL in Excel VBA
Product
Microsoft Excel
Device & OS
Windows
Scenario
Running an Excel macro in an XLSB file that utilizes a 32-bit CDDBControl DLL (e.g., CddbID3Tag) for MP3/ID3 metadata manipulation.
Observed behavior
VBA execution halts with a 'Class not registered' runtime error when executing the instantiation line (e.g., Dim id3Tag As New CddbID3Tag), typically because the 64-bit Excel application cannot load the 32-bit COM DLL.
Before you start

Verify your Microsoft Excel architecture by navigating to File > Account > About Excel. Knowing whether you are running a 32-bit or 64-bit version of Excel is crucial for resolving DLL compatibility issues.

Solution 1Recommended

Resolve the 32-bit and 64-bit Architecture Mismatch

A 64-bit version of Microsoft Office cannot instantiate a 32-bit ActiveX or COM DLL. You must ensure the DLL's bitness matches your Office installation.

In-process COM components (DLLs) must run in the same memory space as the host application. Because of this architectural restriction, a 64-bit host like 64-bit Excel simply cannot load a 32-bit DLL, resulting in the 'Class not registered' error regardless of successful system registration.

1
Check your Excel architecture

Open Excel and go to File > Account. Click on 'About Excel' and look at the top line to see if it specifies '32-bit' or '64-bit'.

2
Obtain a 64-bit version of the DLL

If you are running 64-bit Excel, check the software provider's website to see if a 64-bit release of your CDDBControl or ID3 metadata DLL is available, and register it.

3
Reinstall Office as 32-bit (Alternative)

If no 64-bit version of the DLL exists (which is common for older libraries from the 1999-2000 era), your only native solution to keep using the macro is to uninstall 64-bit Microsoft Office and install the 32-bit version instead.

Registration does not fix bitness mismatch: Using regsvr32 to register the DLL successfully will place it in the registry and the VBA References list, but it will not make it compatible with 64-bit Excel.
Free Microsoft Office alternative

Need a reliable and flexible alternative for your spreadsheets?

Dealing with strict architecture limitations and COM DLL errors in Microsoft Office can disrupt your workflow. Try WPS Office, a highly compatible, lightweight, and free alternative that supports VBA macros and handles your existing Excel files seamlessly.

  1. 1. Download the installer: Visit the official WPS Office website and download the free installation package.
  2. 2. Install WPS Office: Run the installer and follow the on-screen instructions to set up the suite on your Windows PC.
  3. 3. Open your macro-enabled files: Launch WPS Spreadsheets and open your .xlsb or .xlsm files to continue working with your VBA projects.
Fully compatible with Microsoft Excel formats (.xls, .xlsx, .xlsm, .xlsb)Built-in VBA macro support for automating complex spreadsheet tasksLightweight installation with fast loading times and low system resource usageFree to use with a familiar, easy-to-navigate tabbed interface
microsoft office alternative - wps office

Frequently Asked Questions

Can I force 64-bit Excel to run a 32-bit DLL?

No, 64-bit Excel cannot natively load a 32-bit in-process COM DLL. You must either use a 64-bit version of the DLL, switch to 32-bit Excel, or use complex out-of-process COM surrogate workarounds which are generally not practical for standard VBA macros.

Why does my DLL show up in the VBA References list but still fail?

The VBA editor reads the Windows registry to populate the References list. Even if a 32-bit DLL is correctly registered and appears in the list, the 64-bit Excel runtime environment will still fail to instantiate it in memory, resulting in the 'Class not registered' error.

How do I know if my DLL is 32-bit or 64-bit?

You can check the DLL's architecture using third-party dependency walker tools, or by inspecting the file properties. If the DLL was created around 1999-2000, it is almost certainly a 32-bit component, as 64-bit Office did not exist at that time.