Without the DLL, a VB6 compiler, a MIDL compiler, I think it's the end of the road for me, then.

If I may suggest, the IDL that you've shown is *so* geared towards C++, and it also seems to be missing import("stdole2.tlb") which VB requires for various reasons. On that basis, I would ditch the C++ version and start writing a VB one from scratch, testing each component as you go: don't forget to back up your registry otherwise the C++ one will cease to work the minute you reference your new VB version from VB6 - it auto-registers typelibs.

A lot of work, yes, but I think that's the only way forward for you now.