Obtener instancia de aplicación de Excel con C # por nombre de usuario
-
12-09-2019 - |
Pregunta
Tengo una sencilla aplicación C # que tiene que escribir algunos valores en unos rangos de Excel de una hoja de trabajo específica. Puedo crear una instancia de aplicación de Excel, si no existe, pero si existen Quiero configurar activa y tomar una instancia si a utilizar en mi código.
Yo uso este código para crear una nueva aplicación:
Microsoft.Office.Interop.Excel app =
new Microsoft.Office.Interop.Excel.Application();
app.Visible = true;
Para obtener el identificador de ventana de Excel activo i utilizar esta API
[DllImportAttribute("User32.dll")]
private static extern int FindWindow(String ClassName, String WindowName);
¿Cómo puedo obtener una instancia de aplicación de Excel por un mango?
int hWnd = FindWindow(null, "Microsoft Excel - MySheet.xlsx");
Microsoft.Office.Interop.Excel app = ....(hWnd)
Solución
Utilice el siguiente código para obtener la primera instancia en ejecución de Excel:
oExcelApp = (Excel.Application)System.Runtime.InteropServices.Marshal.GetActiveObject("Excel.Application");
Ejemplo
public Excel.Application StartExcel()
{
Excel.Application instance = null;
try
{
instance = (Excel.Application)System.Runtime.InteropServices.Marshal.GetActiveObject("Excel.Application");
}
catch (System.Runtime.InteropServices.COMException ex)
{
instance = new Excel.ApplicationClass();
}
return instance;
}
Otros consejos
Es posible que haya más de una instancia de Excel en ejecución.
GetActiveObject (...) busca en la tabla de objetos en ejecución (ROT) y le daría la última instancia de Excel que se abrió -. No necesariamente la que corresponde con el identificador de ventana que tiene
Usted está buscando AccessibleObjectFromWindow (..). El rel="noreferrer"> vincula en la otra respuesta muestra cómo utilizar esta función.
Otro vínculo - http://blogs.officezealot.com /whitechapel/archive/2005/04/10/4514.aspx .
Puede utilizar Marshal.GetActiveObject, consulte esta entrada del blog para más detalles:
http : //blogs.msdn.com/andreww/archive/2008/11/30/starting-or-connecting-to-office-apps.aspx