AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Zugriff auf MS Excel

Ein Thema von ThoPos · begonnen am 9. Nov 2008 · letzter Beitrag vom 14. Feb 2009
Antwort Antwort
Seite 1 von 4  1 23     Letzte »    
ThoPos

Registriert seit: 30. Jun 2004
Ort: Köln
69 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#1

Zugriff auf MS Excel

  Alt 9. Nov 2008, 21:01
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
Thomas
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.537 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Zugriff auf MS Excel

  Alt 9. Nov 2008, 21:05
Wie startest Du Excel denn? Per ShellExecute? Das gibt Dir doch IIRC das Instanzen-Handle zurück (oder eben einen Fehlercode).
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#3

Re: Zugriff auf MS Excel

  Alt 9. Nov 2008, 21:30
Du könntest die Datei auch per COM/OLe laden lassen
Markus Kinzler
  Mit Zitat antworten Zitat
ThoPos

Registriert seit: 30. Jun 2004
Ort: Köln
69 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#4

Re: Zugriff auf MS Excel

  Alt 10. Nov 2008, 03:45
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
Thomas
  Mit Zitat antworten Zitat
Benutzerbild von Chemiker
Chemiker

Registriert seit: 14. Aug 2005
1.858 Beiträge
 
Delphi 11 Alexandria
 
#5

Re: Zugriff auf MS Excel

  Alt 10. Nov 2008, 07:02
Hallo ThoPos,

am besten wird es sein, wenn Du Dir eine neue Excel-Instanz erstellst.

Mit:

Excel:= CreateOleObject('Excel.Application’); Und anschließend Deine XLS-Datei in Excel öffnen.


Bis bald Chemiker
wer gesund ist hat 1000 wünsche wer krank ist nur einen.
  Mit Zitat antworten Zitat
teebee

Registriert seit: 17. Jan 2003
Ort: Köln
460 Beiträge
 
Delphi 6 Professional
 
#6

Re: Zugriff auf MS Excel

  Alt 10. Nov 2008, 08:18
Es gibt bei MS einen Artikel, der anscheinend beschreibt, was Du brauchst:
Zitat:
Another way to get the IDispatch is by using the GetActiveObject() API to get the server's IDispatch from the ROT. However, this method requires that you must be able to obtain the CLSID or ProgID of the server. Furthermore, ambiguous situations can occur where you can't distinguish between multiple instances of the server.

This article uses another approach to obtain the IDispatch, which works for both Microsoft Excel and Microsoft Word, even when multiple instances are running.
  Mit Zitat antworten Zitat
ThoPos

Registriert seit: 30. Jun 2004
Ort: Köln
69 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#7

Re: Zugriff auf MS Excel

  Alt 3. Feb 2009, 13:18
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
Thomas
  Mit Zitat antworten Zitat
Benutzerbild von Chemiker
Chemiker

Registriert seit: 14. Aug 2005
1.858 Beiträge
 
Delphi 11 Alexandria
 
#8

Re: Zugriff auf MS Excel

  Alt 3. Feb 2009, 13:43
Hallo ThoPos,

Zitat von ThoPos:
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.
Warum startest Du Excel nicht mit Deinem Programm? Irgendwie werde ich da nicht schlau raus.

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
wer gesund ist hat 1000 wünsche wer krank ist nur einen.
  Mit Zitat antworten Zitat
Benutzerbild von Sherlock
Sherlock

Registriert seit: 10. Jan 2006
Ort: Offenbach
3.762 Beiträge
 
Delphi 11 Alexandria
 
#9

Re: Zugriff auf MS Excel

  Alt 3. Feb 2009, 13:56
Zitat von Chemiker:
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?
Der geschilderte Zusammenhang legt eigentlich nahe ein Excel-Addin zu schreiben.
http://www.delphipraxis.net/internal...ht=excel+addin

Sherlock
Oliver
  Mit Zitat antworten Zitat
ThoPos

Registriert seit: 30. Jun 2004
Ort: Köln
69 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#10

Re: Zugriff auf MS Excel

  Alt 3. Feb 2009, 20:28
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
Thomas
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 4  1 23     Letzte »    


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:12 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz