Ho una semplice applicazione C# che deve scrivere alcuni valori in intervalli di Excel di un foglio di lavoro specifico. Se non esiste, creo un'istanza dell'applicazione Excel, ma se esiste voglio impostarla e prendere un'istanza se deve essere utilizzata nel mio codice.Ottieni istanza dell'applicazione Excel con C# da Handle
Io uso questo codice per creare una nuova applicazione:
Microsoft.Office.Interop.Excel app =
new Microsoft.Office.Interop.Excel.Application();
app.Visible = true;
per ottenere l'handle della finestra di Excel attiva io uso questa API
[DllImportAttribute("User32.dll")]
private static extern int FindWindow(String ClassName, String WindowName);
come posso ottenere un'istanza di applicazione Excel una maniglia?
int hWnd = FindWindow(null, "Microsoft Excel - MySheet.xlsx");
Microsoft.Office.Interop.Excel app = ....(hWnd)
Per me, 'instance = new Excel.ApplicationClass();' non ha funzionato. Ho dovuto usare 'instance = new Excel.Application();'. –
@DavidMurdoch questo è il risultato di una [modifica in VS2010 per incorporare tipi di interoperabilità] (http://blogs.msdn.com/b/mshneer/archive/2009/12/07/interop-type-xxx-cannot-be -Embedded-uso-the-applicabile-interfaccia-instead.aspx). Passare a 'Application()' su 'ApplicationClass()' è una soluzione, si ottiene lo stesso risultato (anche se sembra che si stia creando un'istanza di un'interfaccia!). – James