Ok, realmente parece que ADODB espera que una declaración de consulta comience con select
.Por lo tanto, una solución para el problema podría ser encerrar la declaración en un select * from ( .... )
así:
Dim sql As String
sql = "with w as (select 'foo' x from dual) select x from w"
' enclose the statement:
sql = "select * from (" & sql & ")"
rs.Open sql, cn