¿y has probado a crear la cadena antes y luego pasarla al shellexecute?
Código:
cVariable = "expedientes/" + DBECodigo->Text.c_str() + ".pdf";
ShellExecute(NULL, "open",cVariable,NULL, NULL, SW_SHOWNORMAL);
de paso puedes ver qué hay realmente en cVariable.