/ / Más C # Automatizando a Excel - c #, .net, excel, ms-office, office-interop

Más C # Automatizando a Excel - c #, .net, excel, ms-office, office-interop

Esto lanza un nuevo libro de Excel:

        Excel.Application oXL;
Excel._Workbook oWB;

oXL = new Excel.Application();
oXL.Visible = true;

oWB = (Excel._Workbook)(oXL.Workbooks.Add( Missing.Value ));

Sin embargo, ¿qué pasa si uno quiere o ...

- "GetObject" (en el paradigma de automatización familiar) a un libro de trabajo que ya está cargado y abierto en la pantalla, o

- ¿Accede y escribe datos en un libro cerrado por nombre de ruta?

Ambos de los cuales son factibles según los estándares anteriores. Preferiblemente este último aunque no soy un seleccionador en este momento. Gracias por cualquier ayuda.

Respuestas

2 para la respuesta № 1

Puede obtener una instancia existente de Excel usando:

Marshal.GetActiveObject("Excel.Application")

Esto lanzará una COMException si no hay ninguna instancia de Excel ejecutándose.

Una desventaja de automatizar una instancia de Excel que es visible es que sus llamadas pueden fallar porque Excel está ocupado. Es posible que necesite implementar IMessageFilter para evitar este problema

En cuanto al acceso a un libro cerrado por ruta, debe abrir el libro:

oXL.Workbooks.Open(...)