If the goal of your extension is to provided additional functions for the user to call from a worksheet, you should probably look at using the C API. Using the C API you can build a .XLL that the user can File/Open just like any other workbook. Upon opening the XLL it will be able to automatically register the worksheet functions for your users. This is theoretically a single-file solution. To accomplish this same task with OLE Automation requires at least two files. The first file is the .DLL containing your code. The second file is a workbook containing a VBA module that wraps each of the functions in your DLL with a VBA routine so that they are callable from the worksheet. On the other hand, if your intended audience is composed of VBA developers you should look at using the OLE Automation interface and providing a type library for your DLL. A type library automatically registers all of the functions in your DLL for a VBA developer and eliminates the need for the developer to declare your functions before they call them.