I wrote an application that is supposed to pass information about changes
made in an Excel file by one user to all other users that have the same file
opened. To that end I developed an ActiveX control in VB6 with a method that
passes the Excel.Range object received from Excel's Worksheet_Change event
to a local exe server COM object (also in VB6). This local server then
passes the Range to another exe server COM object - this one written with
ATL 3.0) that runs on a server machine. This server then generates an event
that is trapped by every local server object, which distributes it further
to every ActiveX client and so further to Excel.
In ATL the Range object is passed as a IDispatch*, in the local server and
the ActiveX it's passed as an Excel.Range.
Somewhere along the line however, I must be doing something wrong because
the Range object never seems to make it to the local server. How should I
marshal this Range? Excel's Worksheet_Change event starts of the sequence
with a ByVal Target As Range. How should I treat this range in the local
server and in the remote server?

Before I started using the local server, I only had the remote server and
the ActiveX and everything worked fine. Unfortunately, the only way to get
that scheme to work was by setting the default authentication level on all
client machines to none which was deemed unacceptable. The local server
solves this problem but now I can't pass the range object in a proper way.

Any ideas, suggestions are welcome.

Tom Schelfaut