Of course you can use a DLL and put it into their c:\Windows\System32. It might need to be registered though. You could use .net and make an EXE and put it in a central location. You could use a regular XLSM and they can use Application.Run() to run it.
The Add-in method will probably work though.