ActiveX EXEs and ActiveX dynamic link libraries (DLLs) let you combine your objects into components that can provide these objects to other applications (clients) through Automation. Both types of ActiveX components expose some or all of their objects to external applications.
A client application that creates and uses instances of an ActiveX EXE's exposed objects uses them out-of-process, which means that the code in the ActiveX EXE runs in its own thread and in its own workspace, separate from the code space of the client application.
On the other hand, an ActiveX DLL can't run as a stand-alone application but instead provides a dynamic link library of objects for applications to use in-process. This means that the code from the ActiveX DLL runs in the same code space as the calling application, resulting in faster, more efficient program execution. Both types of ActiveX components are useful, and Visual Basic lets you build both types without resorting to C or other languages.