Hallo werte VSTO-Entwickler,
da das Thema VSTO-Entwicklung nicht so weitläufig dokumentiert ist, wie beispielsweise PHP-Programmierung, hoffe ich, dass ich hier zu meinem Problem eine Lösung oder wenigstens Hilfestellung beziehen kann. Google und englische Foren konnten mir bisher nicht weiterhelfen.
Momentan arbeite ich an einem Excel 2003 Add-In, welches mit MS Visual Studio 2008 entwickelt wird.
Das eigentliche Add-In besteht aus einem VSTO-Add-In und einem Automatisierungsserver (DLL), welcher eine Excel-Funktion implementiert.
Diese Excel-Funktion dient als Container für die eigentlichen Funktionen, die wiederum von einem User erstellt werden. Der Zugriff auf die Rückgabewerte erfolgt im Hintergrund über eine Datenbankverbindung.
Die Funktion hat zwei Sting-Parameter, die eigentliche Funktion und deren Parameter, und wird folgendermaßen in der Excel-Zelle aufgerufen (wie jede andere eigentlich auch):
=Funktion("<Funktionsname>";"<Parameter1>;<Parameter2a>,<Parameter2b>;<Parameter3>")
Da die Anwender dieses Add-In normalsterbliche Bürokauffrauen und Bürokaufmänner sind, habe ich u.a. für diese Funktionen eine GUI erstellt (Windows-Form), die über das eigentliche VSTO-Add-In aufgerufen wird, um die gespeicherten Funktionen und deren Parameter auswählen und eingeben zu können. Über die Windows-Form wird ein String erstellt, der wie die obige Funktion aussieht und in die Excel-Zelle geschrieben wird.
Nun tritt allerdings folgendes Problem auf:
Aufgrund des "=" in der Zeichenkette versucht Excel eine Funktion aufzurufen und die Prozedur abzuarbeiten.
Allerdings tritt hier der Fehler auf. Excel findet die Funktion in der Funktionsliste nicht und schreib als Wert "
Name? " in die Zelle. Dies bedeutet im Allgemeinen, dass die Funktion nicht gefunden wird bzw. existiert. Schaut man im Nachhinein in die Formel-/ Funktionsliste, so ist die Funktions-Funktion nicht mehr vorhanden, aber der Automatisierungsserver noch unter Add-Ins vorhanden und aktiv. Testet man jedoch dieses Szenario mit der Funktion "=SUMME(1;2)" als String funktioniert es.
Im Gegenzug zur beschriebenen Situation, funktioniert die Excelfunktion ohne Probleme, wenn nachdem Excel gestartet wurde:
- der Nutzer diese ohne GUI direkt in die Excelzelle schreibt
- der Nutzer diese ohne GUI direkt in die Excelzelle schreibt und im Nachhinein die GUI der Funktionsabfrage nutzt
- der Nutzer zuvor lediglich auf den Button "Funktion einfügen" klick (dadurch sieht man die Funktion in der Auswahl)
- quasi jede andere Variante genutzt wird, ohne die GUI von Beginn an zu nutzen.
Das VSTO-Add-In, als auch der Automatisierungsserver, werden über ein Setup installiert und registriert, und die Rechtevergabe ist ebenfalls korrekt.
Also woran liegt es, dass die Funktion des Automatisierungsservers sich in bestimmten Fällen verflüchtigt?
Vielen Dank im Vorraus
Ps: Ich habe bewusst nicht noch mehr Vorinformationen und -Kenntnisse eingebracht, da ich sonst auch hätte ein Buch schreiben können. Falls noch Informationen nötig sind, werde ich diese gern nachreichen.