![]() |
Zugriff auf MS Excel
Hallo Zusammen,
ich stehe vor folgendem Problem: Ich starte von Excel heraus mein Delphi-Programm und übergebe als Parameter den Namen der Excel-Arbeitsmappe und der Excel-Tabelle. In meinem Programm greife ich dann mit GetActiveOLEObject('Excel.Application') auf Excel zu und lese die Tabelle aus. Dies funktioniert gut - solange nur eine Instanz von Excel läuft. Aber wie kann mit ich die korrekte Instanz von Excel identifizieren und als Object einbinden? Gruß aus Köln Thomas |
Re: Zugriff auf MS Excel
Wie startest Du Excel denn? Per ShellExecute? Das gibt Dir doch IIRC das Instanzen-Handle zurück (oder eben einen Fehlercode).
|
Re: Zugriff auf MS Excel
Du könntest die Datei auch per COM/OLe laden lassen
|
Re: Zugriff auf MS Excel
Hallo Zusammen,
leider verstehe ich Eure Antworten nicht. :?: Wie geschrieben läuft Excel schon und die Arbeitsmappe ist auch schon geladen. Ich starte von Excel heraus mit 'Shell "MeinProg.exe" "Mappe.xls" "Tabelle1", vbnormal' mein Delphi-Programm. @DeddyH Welche Rolle spielt es also, wie Excel vom Desktop oder Startmenü aus gestartet wurde? @mkinzler Wie soll ich die bereits geöffnete Datei mit COM/Ole laden? Gruß aus Köln Thomas |
Re: Zugriff auf MS Excel
Hallo ThoPos,
am besten wird es sein, wenn Du Dir eine neue Excel-Instanz erstellst. Mit:
Delphi-Quellcode:
Und anschließend Deine XLS-Datei in Excel öffnen.
Excel:= CreateOleObject('Excel.Application’);
Bis bald Chemiker |
Re: Zugriff auf MS Excel
Es gibt
![]() Zitat:
|
Re: Zugriff auf MS Excel
Hallo teebee,
das scheint das zu sein, was ich brauche. Auch wenn ich auf Grund anderer Probleme erst jetzt wieder dazu komme, mich diesem Problem anzunehmen. Nur: kann mir das bitte jemand nach Delphi 2007 übersetzen? Danke im Voraus! Thomas |
Re: Zugriff auf MS Excel
Hallo ThoPos,
Zitat:
Du hast Excel mit einer Tabelle, dann startest Du Dein Programm aus Excel und willst dann wieder Bezug auf die Tabelle nehmen die in Excel steht aus dem Du Dein Programm startest. Ist es nicht viel einfacher von Deinem Programm Excel zu starten? Bis bald Chemiker |
Re: Zugriff auf MS Excel
Zitat:
![]() Sherlock |
Re: Zugriff auf MS Excel
Hallo Zusammen,
ich versuche mal mein Problem näher zu beschreiben. Von einem analytischen Meßgerät werden physikalische und chemische Daten gemessen. Die gemessenen Daten werden anschließend vom Analysengerät automatisch, zur weiteren Verrechnung, nach Excel geschrieben. Anschließend werden diese Daten vom Anwender mittels eines von mir erstellten AddIns aufbereitet und die endgültige Ergebnisse ermittelt. Diese Ergebnisse sollen danach zum einen in eine Oracle-Datenbank geschrieben und zum anderen an den Auftraggeber übermittelt werden. Aus dem AddIn heraus sind diese beiden Schritte nicht praktikabel, weil - die Datenbankanbindung mit ODAC einfacher, besser und schneller ist als ODBC bzw. ADO. - mit Delphi FTP, SMTP und ähnliches unkomplizierter ist. Aus diesem Grund starte ich, nach dem das Excel-AddIn mit seinen Aufgaben fertig ist, mein Delphi-Programm, welches die Tabelle ausliest und die Daten in eine Oracle-Datenbank schreibt. Anschließend erfolgt die Übermittelung der Daten an den Auftraggeber nach Kundenwunsch (FTP, Mail, Fax, Andruck, etc.). Das ganze funktioniert einwandfrei - solange nur eine Instanz von Excel läuft. Wenn aber das Analysengerät eine neue Excel-Datei anlegt, während mein AddIn gerade eine Auswertung durchführt, so sind beim anchließend Start des Delphi-Programmes zwei Instanzen von Excel geöffnet. Und schon liefert das GetOLEObject, genauer gesagt der anschließende Zugriff auf die Arbeitsmappe, in fast allen Fällen eine Exception. Ich hoffe, daß jetzt mein Problem verständlicher ist. Gruß Thomas |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:45 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz