Obtenir l'instance de l'application Excel avec C # par Handle
J'ai un c# application simple qui ont à écrire des valeurs dans excel varie d'une feuille de calcul spécifique.
J'ai créer une instance de l'application Excel s'il n'existe pas, mais s'il existe, je veux actif et de prendre un exemple si pour l'utiliser dans mon code.
J'utilise ce code pour créer une nouvelle application:
Microsoft.Office.Interop.Excel app =
new Microsoft.Office.Interop.Excel.Application();
app.Visible = true;
Pour obtenir le handle de active tableur excel, j'utilise cette api
[DllImportAttribute("User32.dll")]
private static extern int FindWindow(String ClassName, String WindowName);
Comment puis-je obtenir une instance de l'application excel par une poignée?
int hWnd = FindWindow(null, "Microsoft Excel - MySheet.xlsx");
Microsoft.Office.Interop.Excel app = ....(hWnd)
source d'informationauteur Babba
Vous devez vous connecter pour publier un commentaire.
Utiliser le code suivant pour obtenir la première instance d'Excel:
Exemple
Il pourrait y avoir plus d'une instance d'Excel en cours d'exécution.
GetActiveObject(...) regarde dans la Table ROT () et vous donnent la dernière instance d'Excel qui a été ouvert - n'est pas forcément celle correspondant à la poignée de la fenêtre que vous avez.
Vous êtes à la recherche pour AccessibleObjectFromWindow(..). Le Andrew Whitechapel post lié dans la réponse à faire montre comment utiliser cette fonction.
Un autre lien - http://blogs.officezealot.com/whitechapel/archive/2005/04/10/4514.aspx.
Vous pouvez utiliser le Maréchal.GetActiveObject, consultez cet article de blog pour plus de détails:
http://blogs.msdn.com/andreww/archive/2008/11/30/starting-or-connecting-to-office-apps.aspx