Autor Beitrag
TheHuette
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 81



BeitragVerfasst: Mo 06.10.08 13:55 
Hallo zusammen,

ich stoße gerade auf ein OLE-Problem, das vermutlich auf einen [url=support.microsoft.com/kb/181889/en-us]offiziellen Bug[/url] zurückgeht. Ich bekomme allerdings den Workaround nicht hin.

Ich möchte mit meiner Delphi-Anwendung ein Excel-Dokument mit Inhalt füllen, formatieren und anschließend ein Makro des Dokuments ausführen.
Dazu benutze ich TExcelApplication.

Funktioniert prinzipiell ganz schön, doch während das Makro läuft, hält meine Anwendung an. Soll sie aber nicht, weil das Makro sehr lange dauern kann.

Ich bin mir nicht ganz sicher, ob in diesem Bug-Report tatsächlich das gemeint ist, oder ob der "Run"-Befehl (, um das Makro zu starten) grundsätzlich die darauf folgenden Befehle warten lässt.

Hat da jemand Erfahrung mit? Oder vielleicht einen funktionierenden Workaround?

Der Workaround aus dem Microsoft-Artikel hilft mir nicht weiter. Vielleicht, weil er nichts mit TExcelApplication.Run zu tun hat, vielleicht aber auch, weil ich was falsch mache.

Ich bin für jeglichen, noch so kleinen Hinweise dankbar und würde mein Problem bei Bedarf auch gern noch genauer erklären. :)

Grüße,
Martin

---Moderiert von user profile iconNarses: Beiträge zusammengefasst---

Hier hat jemand aus den Niederlanden das gleiche Problem beschrieben, vielleicht hilft es ja irgendwie ;).
Einen Vorschlag aus dem Beitrag hatte ich bereits erfolglos ausprobiert (und vergessen zu erwähnen): Alle Operationen, die mit dem OLE-Objekt zu tun haben in einem eigenen Thread ausführen.
TheHuette Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 81



BeitragVerfasst: Di 07.10.08 08:40 
user profile iconTheHuette hat folgendes geschrieben Zum zitierten Posting springen:

Einen Vorschlag aus dem Beitrag hatte ich bereits erfolglos ausprobiert (und vergessen zu erwähnen): Alle Operationen, die mit dem OLE-Objekt zu tun haben in einem eigenen Thread ausführen.


Das war etwas früh geurteilt. Ich hab die Sache mit dem eigenen Thread noch mal überdacht und meinen Fehler gefunden.

Jetzt rufe ich TExcelApplication.Run (und das drum herum - CoInitializeEx und CoUninutialize nicht vergessen!) im separaten Thread auf und kann damit ein Makro problemlos ausführen, dass z.B. Dlg.Show in Excel ausführt.