J'ai une simple application C# qui doit écrire des valeurs dans une plage excel d'une feuille de calcul spécifique. Je crée une instance d'application Excel si elle n'existe pas, mais si elle existe, je veux l'activer et prendre une instance si elle doit l'utiliser dans mon code.Récupère l'instance de l'application Excel avec C# par Handle
J'utiliser ce code pour créer une nouvelle application:
Microsoft.Office.Interop.Excel app =
new Microsoft.Office.Interop.Excel.Application();
app.Visible = true;
Pour obtenir la poignée de la fenêtre Excel actif i utilise cette api
[DllImportAttribute("User32.dll")]
private static extern int FindWindow(String ClassName, String WindowName);
Comment puis-je obtenir une instance d'application Excel par une poignée?
int hWnd = FindWindow(null, "Microsoft Excel - MySheet.xlsx");
Microsoft.Office.Interop.Excel app = ....(hWnd)
Pour moi, 'instance = new Excel.ApplicationClass();' n'a pas fonctionné. J'ai dû utiliser 'instance = new Excel.Application();'. –
@DavidMurdoch ceci est le résultat d'un [changement de VS2010 pour l'intégration des types d'interopérabilité] (http://blogs.msdn.com/b/mshneer/archive/2009/12/07/interop-type-xxx-cannot-be -embedded-use-the-applicable-interface-à la place.aspx). Passer à 'Application()' sur 'ApplicationClass()' est une solution de contournement, vous obtenez le même résultat (même s'il semble que vous instanciez une interface!). – James