Einzelnen Beitrag anzeigen

zeras

Registriert seit: 11. Mär 2007
Ort: Saalkreis
1.633 Beiträge
 
Delphi 12 Athens
 
#13

AW: Daten in Excel übertragen

  Alt 14. Nov 2015, 16:37
Am besten ist wenn der Benutzer nicht eingreifen kann.
Da gebe ich dir vollkommen Recht. Deshalb versuche ich ja, über euch noch die beste Lösung zu finden.

Ich würde ein Formular in Excel gestalten und die Adresse und Logo usw. vom Kunden im eigenen Programm ablegen lassen.
Das Excel Grundformular sollte der Kunde selber gestalten können. Da aber jeder Kunde sein eigenes Logo hat, wollte ich das auch vom Kunden mit implementieren lassen.

Beim Aufrufen der Excel-Funktion würde ich dann das Excel-Formular aufrufen und die Kunden spezifische Daten an die dafür vorgesehen stellen eintragen, mit den zuvor ausgesuchten Daten.
Das ist ja das, was ich will. Das Problem hier ist, dass jeder Kunde ein eigenes Formular haben will. Das bedeutet, dass Kunde 1 einen Wert in Zeile 1, Spalte 1 haben will, der Kunde 2 einen Wert in Zeile 2, Spalte 2 haben will, usw.
Die Kunden haben teilweise aus der Vergangenheit selbst ein Formular entworfen und möchten dass nun mehr oder weniger automatisiert füllen. Aber jeder Kunde hat seine eigenen Ideen in das Formular gebracht.

Anschließend würde ich den Kunden das Formular abspeichern lassen(oder auch ausdrucken), ohne das er überhaupt Excel gesehen hat. Er kann dann, wenn er will diese Excel-Datei selber nochmal in Excel aufrufen und individuell anpassen.
Da gehe ich auch mit.

Mein eigentliches Problem wäre dann, wie der Kunde sein Formular aufbaut und wie ich an die entsprechenden Zellen komme. Ich könnte auch die Zellen benennen lassen, aber das macht auch viel Arbeit.
Deshalb dachte ich an einen "Teach Modus". Der Kunde markiert mit Drag eine Zelle aus meinem Grid. Dann legt er es mit Drop auf die entsprechende Zelle im Excel. Dies dann mit allen gewünschten Werten. So hat der Kunde einmalig die Arbeit. Beim nächsten Mal starte ich per Makro die Werte des Teach-Modus und das Formular füllt sich mit den Werten automatisch. Ich muss nur die Drags und Drops merken und wieder abspielen.
Ich hoffe, das ist einigermaßen verständlich rumgekommen.

Das Übertragen klappt nun auch soweit, nur habe ich noch nicht herausgefunden, wie man sicherstellen kann, dass die Daten auch im Excel angekommen sind.

Mit
Delphi-Quellcode:
var
  WS: OleVariant;
  Content : OleVariant;

begin
  Memo1.Lines.Add('Grid3OleDragStop'+ Format('OLEEffect=%d',[OLEEffect]));

  ExcelApplication1.Connect;
  ExcelWorkbook1.ConnectTo(ExcelApplication1.ActiveWorkbook);
  ExcelWorksheet1.ConnectTo(ExcelApplication1.ActiveSheet as _Worksheet);
  WS := ExcelApplication1.ActiveSheet as _Worksheet;

  ShowMessage(Format('%d, %d',[ExcelApplication1.ActiveCell.Column, ExcelApplication1.ActiveCell.Row]));

end;
bekomme ich auch schon die Zelldaten raus, aber damit ist nicht sichergestellt, dass diese auch im Excel gelandet sind.
Da bräuchte ich noch eine Idee.
Matthias
Es ist nie falsch das Richtige zu tun!
- Mark Twain

Geändert von zeras (14. Nov 2015 um 16:44 Uhr)
  Mit Zitat antworten Zitat