If you want to do a JOIN, there is no reason you can't do the join *FROM* the Excel spreadsheet(s).
That is, do *NOT* create two separate recordsets. Just modify the SQL you used to get the data form Excel so *IT* returns a single recordset.
On the other hand, the code you show there doesn't look like it wants to do a JOIN. Looks like you just want the UNION of the two results, no? Is the structure of the two recordsets identical or nearly so??? Same number of fields with same types or at least compatible types??
If so, you *COULD* disassociate each RS from its connection if you use a client side cursor and then set the data source of each to NOTHING. Then you could indeed choose one RS as the "master" and use AddNew on it as you added records from the other Recordset. It would be slow and clumsy compared to other ways, but it should work.
You could also do this in
VB.NET (well, actually ADO.NET) by creating a DataSet and then using the data from the two queries to create DataTables and then (to a limited degree) you can relate the two DataTables and do filtering on the result. Or, again if this is actually a UNION that is needed, it's trivial to copy DataRows from one DataTable to another. But clearly *NOT* using ADODB.Recordset objects. You'd have to switch to ADO.NET.
But lay some more details on us. Start by discussing whether you need a JOIN or a UNION. And start by discussing why you can't just use a single query against Excel (if, indeed, you can't).