Buenos dias! (aquí por lo menos amaneció hace un par de horucas...

)
En cuanto a lo último, lo de los paréntesis nada, olvidalo, estaba bien antes...

Pues no se que pensar a no ser que sea algo en la configuración local de tu servidor... si, ya se que esta es la excusa fácil que te pondrá todo el mundo pero bueno... ejem, vale, probemos otra cosilla...
He buscado un poco de información sobre ese error pero aún no me ha quedado muy claro. Vamos por partes... Y si cambias la descripción de la consulta? Prueba a quitar el "*", bien poniendo la lista de campos (paciencia

) o como veo que sólo lo utilizas para ver que existe el registro y luego no utilizas la información recogida, intenta con una función sql:
SQL = "Select COUNT(*) AS TotDnis from Participantes where dni='" & dni & "'"
Si devuelve 1 ó más es que ya estaba registrado con anterioridad, y si devuelve registro vacío haces el insert.
Pero bueno, de todas formas aunque "casque" en otra parte más abajo en el código, sirve para descartar causas, y desestimar que sea o no por la construcción de la consulta (aunque es extraño porque no tendría sentido que en unos sitios funcione y en otros no, pero quien sabe, lo mismo las diferentes versiones de Office/Access con o sin SR's producen resultados diferentes, ya no me sorprende nada del imperio mocosoft...

).
Enga, no me enrollo mas.
(continurá...)