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 3 von 4     123 4      
ThoPos

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

Re: Zugriff auf MS Excel

  Alt 5. Feb 2009, 18:58
Zitat von globetrotter77:
b) ..., aber auf keinen Fall aus Delphi wieder Excel aufrufen ... das ist vergleichbar damit, sich am eigenen Schopf aus dem Sumpf zu ziehen.
Hallo Globetrotter,

das verstehe ich nicht. Wenn ich aus Excel heraus mein Programm starte und per GetOLEObjekt die Steuerung von Excel übernehme und anschließend Excel wieder freigebe, so ist doch alles in Ordnung? Ich kann doch auch, wenn ich mit dem Auto unterwegs bin, einen ortskundigen Passanten für mich durch die Stadt fahren lassen, und anschließend wieder selber weiterfahren; nur das anschließend der Passant an einem anderen Ort ist. So wie meine Excel-Mappe geändert ist.

Gruß
Thomas
Thomas
  Mit Zitat antworten Zitat
Benutzerbild von Chemiker
Chemiker

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

Re: Zugriff auf MS Excel

  Alt 5. Feb 2009, 19:16
Hallo ThoPos,

Zitat von ThoPos:
Ich kann doch auch, wenn ich mit dem Auto unterwegs bin, einen ortskundigen Passanten für mich durch die Stadt fahren lassen, und anschließend wieder selber weiterfahren; nur das anschließend der Passant an einem anderen Ort ist. So wie meine Excel-Mappe geändert ist.
Klar geht alles, aber was machst Du, wenn der Passant einfach nach Hause fährt. Excel wird geschlossen.


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

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

Re: Zugriff auf MS Excel

  Alt 6. Feb 2009, 03:54
Na ja ...

solche und ähnliche Risiken bleiben immer.

Beim dem von euch immer wieder angesprochenen Datenaustausch per Datei kann es auch vorkommen, daß das eine Programm noch am schreiben ist, während das andere schon mit dem einlesen beginnt. Hier muß man sich - wie ich leider aus meiner Praxis schon erfahren mußte - einen Mechanismus ausdenken, der sicherstellt, daß die Datei auch wirklich zuende geschrieben wurde, bevor das zweite Programm anfängt zu lesen. Und Windows täuscht, insbesondere beim Speichern auf Netzwerklaufwerken, ein "fertig gespeichert" vor, obwohl ein Teil der Datei noch im Schreibpuffer von Windows ruht.

Genauso muß ich mir bei OLE eine entsprechende Sicherheit programmieren.

Aber zurück zu meiner ursprünglichen Frage: Kann mir einer das Beispiel von MS in C ein Beispiel in Delphi übersetzen oder einen anderen Weg nennen, wie ich an die richtige Instanz von Excel komme?

Gruß aus Köln
Thomas
Thomas
  Mit Zitat antworten Zitat
Yheeky

Registriert seit: 7. Jun 2002
1.339 Beiträge
 
#24

Re: Zugriff auf MS Excel

  Alt 6. Feb 2009, 09:40
Weiss jetzt nicht, ob ich dein Problem genau verstanden habe:
Du liest Daten mit deiner Steuersoftware ein (d.h. die Daten sind in deinem Programm). Dann willst du diese Daten in eine Exceldatei packen, welche danach noch mit Formeln angepasst werden müssen. Und die Ergebnisse kommen dann in eine Datenbank...?

Richtig so?
Also ich kann dir nur raten: WENN du einen Export nach Excel umsetzen willst, dann beschäftige dich mit dem Format an sich. Ich würde mich nicht auf irgendwelche Schnittstellen verlassen, das ist immer unsicher. Gehe mal von einem Windows-/Office Update aus, was irgendwas an der Schnittstelle ändert und schon funktioniert dein Programm nicht mehr.

Hoffe ich hab dich richtig verstanden.
  Mit Zitat antworten Zitat
ThoPos

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

Re: Zugriff auf MS Excel

  Alt 6. Feb 2009, 10:31
Hallo Christian,

du hast mich leider nicht richtig verstanden. Die Steuersoftware ist vom Gerätehersteller und exportiert von sich aus per OLE nach Excel. Daran läßt sich nichts ändern. Die anschließenden Berechnungen in Excel erfolgen entweder mit AddIns des Gerätehersteller oder manuell. Ich will nur weitere Daten aus einer Oracle-DB abholen und in die Tabelle schreiben bzw. die endgültigen Daten aus Excel nach Oracle schreiben und ggf. Daten an den Auftraggeber senden.

Gruß
Thomas
Thomas
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#26

Re: Zugriff auf MS Excel

  Alt 6. Feb 2009, 13:43
Hallo Thopos,

ein paar Tage keine Zeit gehabt und schon ist der Teufel los.
Bei Deiner Beschreibung des Text-Datenformates fiel mir ASCII-Delimited, auf Microsoftisch CSV ein.
Und das ist von Excel recht einfach zu bearbeiten (lesen).

Allerdings sehe ich keinen Grund von meinem Vorschlag abzurücken.
1) alle Addins werden in den Schritten a und b genutzt. -> kein Bedarf etwas über sie zu wissen.
2) Das Delphiprogramm bekommt die von 1) erstellten Daten (in welchem Format auch immer), die Schritte c,d,e ausführt.
3) der Qualitätsteil läuft ab.
Zitat:
F: Der Anwender: QS-Dokumentation.
1. Formatieren der Tabelle für den Andruck
2. Andruck der Excel-Tabellen mit allen Meß- und DB-Daten.
3. Unterschreiben und archiveren der Andrucke.
1. Formatieren der Tabelle für den Andruck Was auch immer das heißt(allein damit kann man für ein Leben Aufträge generieren)
2. Andruck der Excel-Tabellen mit allen Meß- und DB-Daten. Also irgendwo gibt es eine (Excel-)Datei mit allen Daten
3. Unterschreiben und archiveren der Andrucke. "das fertige Produkt"

Bei diesen Schritten sehe ich nirgendwo die Notwendigkeit von excel, abgesehen von der Erstellung der "Entproduktdatei", für die ich nebenbei bemerkt ein Text-Format (CSV) zwecks späterer Lesbarkeit, bevorzugen würde.

So wie Du es dargestellt hast, werden diese Arbeitsschritte z.Zt. vom Anwender durchgeführt (Bentzer an der Tastatur). Könnte man diesen vllt. davon überzeugen ein komfortableres und schnelleres und ..... Programm zu nutzen?
Vielleicht noch eine Fehlerprüfung / Vollständigkeitsprüfung als Gimmik obendrauf?

Ansonsten kann ich mich nur allen Ausführungen von globetrotter77 und chemiker anschließen.

Gruß K-H
  Mit Zitat antworten Zitat
globetrotter77

Registriert seit: 16. Jan 2009
Ort: Nürnberg
236 Beiträge
 
Delphi 10.3 Rio
 
#27

Re: Zugriff auf MS Excel

  Alt 6. Feb 2009, 19:28
Zitat von ThoPos:
Zitat von globetrotter77:
b) ..., aber auf keinen Fall aus Delphi wieder Excel aufrufen ... das ist vergleichbar damit, sich am eigenen Schopf aus dem Sumpf zu ziehen.
Hallo Globetrotter,

das verstehe ich nicht. Wenn ich aus Excel heraus mein Programm starte und per GetOLEObjekt die Steuerung von Excel übernehme und anschließend Excel wieder freigebe, so ist doch alles in Ordnung? Ich kann doch auch, wenn ich mit dem Auto unterwegs bin, einen ortskundigen Passanten für mich durch die Stadt fahren lassen, und anschließend wieder selber weiterfahren; nur das anschließend der Passant an einem anderen Ort ist. So wie meine Excel-Mappe geändert ist.

Gruß
Thomas
Das sagt sich so leicht, und es kann auch gut sein, dass ich selber einfach ein paar Sachen falsch mache damit, aber irgendwie hatte ich mit solchen Konstrukten bisher IMMER meine Schwierigkeiten.
Sogar dann, wenn ich in einer etwas längeren Schleife neue Excel-Dateien erstellen wollte, konnte es (musste aber nicht!?) passieren, dass beim Aufruf einer neuen Instanz von Excel (durch einen anderen Benutzer ... meist den ungeduldigen Anwender) irgendjemand oder irgendetwas durcheinander kam. Meistens waren das die üblichen Verdächtigen aus Redmond, die sich ausnahmsweise selber aufhängten.

Die schöne neue Welt, in der jeder mit jedem Auto rumgurken kann, erweist sich meiner Meinung nach nur allzu oft als ne einzige Schlittenfahrt auf ner riesigen Eisfläche.

In deinem Fall würde ich vermutlich eher die Methode des Staffellaufs bevorzugen, wenn es sich nicht ohnehin als sinnvoll erweist, alles in Excel abzuhandeln. (nun ja ... sinnvoll ist vielleicht der falsche Ausdruck bei Excel)
Also Kommando an Delphi komplett übergeben, sobald alle Add-Ins abgearbeitet sind,
und die restlichen Formatierungsarbeiten sowie Ausdruck etc. von Delphi erledigen lassen. Dann beißen sie sich zumindest nicht gegenseitig.
  Mit Zitat antworten Zitat
sputnic

Registriert seit: 15. Okt 2007
3 Beiträge
 
#28

Re: Zugriff auf MS Excel

  Alt 12. Feb 2009, 15:07
Hallo ThoPos,

ich möchte mal auf deine Ausgangsfrage:

Zitat:
Aber wie kann ich die korrekte Instanz von Excel identifizieren und als Object einbinden?
Excel speichert die offenen Instanzen in der RunningObjectTable, diese kannst Du abfragen. Ich habe dazu folgenden Code gefunden:

Delphi-Quellcode:
uses ComObj, ActiveX, Excel2000
var
  ROT: IRunningObjectTable;
  Enum: IEnumMoniker;
  Fetched: integer;
  RunningObj: IMoniker;
  Name: PWideChar;
  BindCtx: IBindCtx;
begin
  OleCheck(CreateBindCtx(0, BindCtx));
  OleCheck(GetRunningObjectTable(0, ROT));
  if ROT.EnumRunning(Enum) = S_OK then
  begin
    Enum.Next(1, RunningObj, @Fetched);
    while RunningObj <> nil do
    begin
      RunningObj.GetDisplayName(BindCtx, nil, Name);
      Memo1.Lines.Append(Name);
      Enum.Next(1, RunningObj, @Fetched);
    end;
  end;
Damit erhälst Du schon mal die Namen der offenen Arbeitsmappen. Über den Namen kannst du dann auf die Instanz zugreifen. Was Du erhälst ist dann ein Workbook Interface. Das könnte dann ungefähr so aussehen:

Delphi-Quellcode:
var
    WB: _WorkBook;
begin
    ....
      if Name = 'Mappe2then
      begin
        ROT.GetObject(RunningObj, App);
        App.QueryInterface(_WorkBook, WB);
        if assigned(WB) then
        begin
          ShowMessage('Done');
          WB.Application.Quit;
        end;
      end;
    ....
end;
Ich hoffe, Du kannst was damit anfangen.

Grüße
Volker
  Mit Zitat antworten Zitat
ThoPos

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

Re: Zugriff auf MS Excel

  Alt 12. Feb 2009, 17:49
Hallo Volker,

vielen Dank schon mal für den Tipp.

Die obere Routine funktioniert prima und ich sehe auch die gewünschte Mappe.

In der unteren Routine habe ich aber das Problem mit der Variablen App. Was für ein Typ ist diese?
Denn ich erhalte immer eine Exception.

Gruß aus Köln
Thomas
Thomas
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

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

Re: Zugriff auf MS Excel

  Alt 12. Feb 2009, 17:51
Müsste TExcelApplication sein
Markus Kinzler
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 4     123 4      


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 12:25 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