Creas dos objetos Connection cada uno apuntado a su BD respectiva. EN base a estas conexiones creas dos recordsets, uno de lectura y el otro actualizable. Seria algo como
Set cnOrigen = new ADODB.Connection
Set rsOrigen = new ADODB.Recordset
Set cnDestino = new ADODB.Connection
Set rsDestino = new ADODB.Recordset
cnOrigen.Open("ConnectionString_Base_Datos_Origen")
cnDestino.Open( "ConnectionString_Base_Datos_Destino")
rsOrigen.Open "SELECT * FROM TablaOrigen", cnOrigen, adOpenForwardOnly, adLockreadOnly
rsDestino.Open "SELECT * FROM TuTablaDestino", cnDestino,adOpenStatic, adLockOptimistic
Do Until rsOrigen.EOF
rsDestino.AddNew
rsDestino.Fields("Campo1" ) = rsOrigen.Fields("Campo1")
...
rsDestino.Update
rsOrigen.Update
Loop
rs.Origen.Close : Set rsOrigen = nothing
rsDestino.Close : Set rsDestino = nothing
cnOrigen.Close: Set cnOrigen = nothing
cnDestino.Close: Set cnDestino = Nothing
Otra manera de hacerlo es armando un SQL y ejecutando contra la conexion destino
Saludos