Ich betreue eine in VB.NET geschriebene Anwendung, die exzessiv mit Excel kommuniziert. Unter anderem wird eine Excel-Instanz als User-Control in einem Fenster eingebunden. Der Anwender kann hier in der Anwendung verwaltete Zeitreihen auswählen, die dann unter Anderem als Grafik dargestellt werden. Er hat auch die Möglichkeit, Zeitreihenwerte in Excel zu ändern, diese Änderungen werden in die Anwendung zurück übertragen. Auf Excel-Seite ist dies über VBA und eine eingebundene DLL realisert.
Zur Zeit läuft die Anwendung als 32-Bit Applikation unter Windows XP. Zukünftig soll die Anwendung als 64-Bit Applikation unter Windows 7 laufen. Excel wird die 64-Bit Version von Excel 2010 sein. Ich habe im Internet einen Haufen an Infos gefunden, aus denen ich entnehme, dass OLE auch unter 64-bit grundsätzlich möglich ist, bin mir aber nicht sicher, ob dies auch in der Konstellation meiner Anwendung funktionieren wird. Generell habe ich auf alle an der Kommunikation beteiligten Komponenten Zugriff. So ist z.B die DLL, welche die Änderungen innerhalb Excel an die Anwendung kommuniziert, selbstgeschrieben und wird ebenfalls auf 64-Bit umgestellt (es war ursprünglich eine ActiveX-DLL die mittlerweile nach Manged C++ protiert wurde).
Ich habe schon mehrere 32-Bit-Anwendungen mit Excel-OLE-Ansteuerung von 32 Bit / XP auf 64 Bit / Win7 umgestellt. Die waren alle in C# geschrieben. Bei mir gab es damit keine Probleme, und das ging einigermaßen zügig. Dann sollte es unter VB.NET auch gehen. Ich weiß nicht genau, was du mit "wird eine Excel-Instanz als User-Control in einem Fenster eingebunden" meinst. Ich denke, du musst einfach ausprobieren, ob und welche Probleme es gibt.
Danke für die Info. Ich mache mir am meisten Sorgen, ob das mit der Zwei-Wege Komunikation weiterhin klappt. Wir feuern innerhalb von Excel Events, die auf der .NET-Seite verarbeitet werden.
Das mit Excel als User-Control ist eigentlich ganz einfach. Per P/Invoke werden Fenstertitel, Fensterrahmen und Menü entfernt und dann wird das Excel-Fenster innerhalb des Formulars eingeblendet und sieht so aus, als wenn es Teil des Formulars ist. Im Prinzip simuliere ich damit das alte OLE-Steuerelement von VB 6.
Excel-Events kamen bei mir nicht vor. Ob das alles problemlos funktioniert, kann ich nicht sagen. Das mit dem Excel als User-Control klingt interessant, kann ich mir bei uns auch vorstellen. Könntest du da mal den Code posten?
Im Prinzip schon, die Grundlage hierfür war ein Artikel auf Codeproject. Ich bin aber noch nicht lange in diesem Forum. Kann man hier irgendwo zip-files ablegen? Der Source ist ziemlich umfangreich.
Das mit Excel als User-Control ist eigentlich ganz einfach. Per P/Invoke werden Fenstertitel, Fensterrahmen und Menü entfernt und dann wird das Excel-Fenster innerhalb des Formulars eingeblendet und sieht so aus, als wenn es Teil des Formulars ist. Im Prinzip simuliere ich damit das alte OLE-Steuerelement von VB 6.