Prueba haciendo un select sobre el select:
Código:
"SELECT * FROM (" & _
"(select "_
&"productos.Id AS productoId,"_
&"productos.titulo AS productoTitulo,"_
&"empresas.Id AS empresaId,"_
&"empresas.empresa AS empresaNombre,"_
&"empresas.posicionamiento AS empresaPosicionamiento "_
&"FROM productos LEFT JOIN empresas ON productos.empresa = empresas.Id WHERE productos.tematica = 5)"_
&" UNION "_
&"(select "_
&"productos.Id AS productoId,"_
&"productos.titulo AS productoTitulo,"_
&"empresas.Id AS empresaId,"_
&"empresas.empresa AS empresaNombre,"_
&"empresas.posicionamiento AS empresaPosicionamiento "_
&"FROM productos LEFT JOIN empresas ON productos.empresa = empresas.Id) "_
&") AS v1 "_
&" ORDER BY productos.Id"
Es posible que se me esté escapando un paréntesis, pero la idea es hacer un select externo y aplicarle a ese select el orden.
Saludos