Este es un problema extraño. ShellExecute en su segunda llamada debería activar automáticamente la ventana en la que ya está abierto el documento. Esto puede deverse a un problema en la configuración del registro o un problema con tu código.
Por ejemplo, si abres un documento desde el explorador, la segunda vez que lo intentas abrirlo (haciendo doble-click) te debería activar la ventana previamente creada con el documento.
Intenta modificar tu código colocando el verbo explícitamente. Además pasaremos
nil en los parámentros y ruta del archivo (nil != '') y por último el handle del escritorio, normalmente 0.
Código Delphi
[-]
ShellExecute(0, 'open', PChar(tmpFileName), nil, nil, SW_SHOW);