c# - ubicacion - microsoft excel no puede obtener acceso al archivo puede haber varios motivos
Acceso a archivos desde el objeto COM de Excel falla cuando se ejecuta desde el servicio NT en Vista (2)
solo algunas preguntas más:
- ¿Qué versión de Excel estás usando?
- ¿Has intentado ejecutar el servicio con privilegios elevados?
Usamos objetos COM para acceder a hojas de cálculo de Excel en un servicio NT (a través del servidor de secuencias de comandos de Windows). Antes de Vista, esto funcionó maravillosamente, pero comenzando con Vista, recibimos este error:
Microsoft Office Excel no puede acceder al archivo ''c: / myfiles / test.xls''. Hay varias razones posibles:
- El nombre o la ruta del archivo no existe.
- El archivo está siendo utilizado por otro programa.
- El libro de trabajo que está intentando guardar tiene el mismo nombre que un libro de trabajo actualmente abierto.
He intentado cambiar la configuración de inicio de sesión del servicio NT para usar mi propia cuenta, una cuenta de administrador y un sistema local. Revisé la Política de seguridad local y no encontré nada. Pasé días buscando en Microsoft KB inútilmente.
Si el script se ejecuta desde una aplicación de consola, funciona bien. El archivo se abre y se procesa sin problemas. El error solo ocurre cuando se ejecuta desde el contexto de un servicio.
Si el servicio se ejecuta en Windows XP o Server 2003 SP1, también funciona bien. Solo en Vista falla (¡y ahora hemos recibido informes de fallas en Server 2003 SP2)!
El código, por lo que vale, es excepcionalmente simple:
dim xl_app
Set xl_app = CreateObject("Excel.Application")
xl_app.Workbooks.Open mypath,0,1
Sospecho que esta persona podría estar experimentando el mismo problema: http://bytes.com/forum/thread819740.html
He "clase de" solucionado este problema. Si usa "dcomcnfg" para cambiar la cuenta para iniciar la aplicación de Excel en una cuenta de usuario o "usuario interactivo", el excel lanzado desde el servicio comienza en esa cuenta y ahora puede acceder al sistema de archivos.
El problema es que esta es una configuración global. Si usa: * "este Usuario": entonces excel SIEMPRE se abre con ese usuario Y siempre se abre sin UI en la sesión 0, incluso para el uso interactivo de Excel. IE siempre es invisible. * "Usuario interactivo": Ahora Excel siempre se inicia en el usuario interactivo, lo que no creo que funcione para un servicio que se iniciará en el arranque con NINGÚN usuario interactivo.
Debe haber alguna configuración de seguridad en esto. Espero que otros tengan otras ideas.