Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Zahlenwerte an Excel übergeben (Zellen ansprechen) (https://www.delphipraxis.net/80996-zahlenwerte-excel-uebergeben-zellen-ansprechen.html)

Mucki 18. Nov 2006 19:11


Zahlenwerte an Excel übergeben (Zellen ansprechen)
 
Hallo! :)
Ich habe eine Frage:

Wie kann ich Zahlenwerte aus Delphi, in Excel übergeben, d.h. Zellen ansprechen ? :gruebel:

Ich weiss nur soviel, dass man OLE verwenden muß.
O.K. damit kann ich ein Excel-Arbeitsblatt öffnen.
Aber wie bekomme ich meine Werte in dieses Arbeitsblatt.
Im Forum habe ich nichts gefunden (bzw. hab nichts verstanden).
An einen StrinGrid habe ich sie bereits übergeben können, aber wie geht das mit Excel?
Wie kann ich die Zellen ansprechen oder muß ich vorher noch etwas beachten...

Wäre nett wenn jemand mir weiter helfen könnte. :idea:

Gruß Mucki :wink:

Chemiker 19. Nov 2006 14:23

Re: Zahlenwerte an Excel übergeben (Zellen ansprechen)
 
Hallo Mucki,

vielleicht hilft dir das weiter:


Delphi-Quellcode:
unit excelzahlUnit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ComObj;

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation
var Excel : Variant;
{$R *.dfm}
{------------------------------------------------------------------------------}
{ EXCEL starten                                                               }
{------------------------------------------------------------------------------}
function f_EXCEL (var m_EXCEL : Variant): boolean;
begin
   try
    m_EXCEL := CreateOleObject('Excel.Application');
    Result := TRUE;
  except
    ShowMessage('Excel konnte nicht gestartet werden!');
    Result := FALSE;
    Exit
  end;
end;



procedure TForm1.Button1Click(Sender: TObject);
var zahl : string;
begin
  if f_Excel(Excel)then  // Excel startet
    ShowMessage('MSExcel ist erfolgreich gestartet worden!!')
   else
     ShowMessage('MSExcel konnte nicht gestartet werden!!');

  Excel.Visible := TRUE; // TRUE = Excel sichtbar.

  Excel.Application.Workbooks.Add; // Neue Arbeitsmappe öffnen in EXECL


  Excel.Range['A1'].Select;              {Auf die erste Zelle setzen }
  Excel.Worksheets ['Tabelle1'].Activate;

  zahl:= inttostr(100);
  Excel.cells[1, 1].Value := zahl; // Bei StringGrid wär der Index [0,0]
 
  Excel.Workbooks.Close; // Excel wieder schliessen.

end;

end.
Bis bald Chemiker

Mucki 19. Nov 2006 17:26

Re: Zahlenwerte an Excel übergeben (Zellen ansprechen)
 
Hmmm ja das muß ich mal ausprobieren! :|

Danke Chemiker. :)

Brueckenhauer 26. Nov 2006 11:14

Re: Zahlenwerte an Excel übergeben (Zellen ansprechen)
 
Genau sowas habe ich gesucht, aber ich würde das gerne habe das excel das im hintergrund alleine speichert unter einem vorgegeben Namen, also ohne das dazu eine Abfrage usw... kommt. Leider bekomme ich, wenn ich Excel. eingebe keine Hilfe um zusehen welche Möglichkeiten ich habe, sonst hätte ich das sicherlich alleine hinbekommen, ich hoffe das ihr mir da weiterhelfen könnt.

Andidreas 26. Nov 2006 11:55

Re: Zahlenwerte an Excel übergeben (Zellen ansprechen)
 
das problem das mir keine hilfe angezeigt wird hab ich auch, mir wird auch immer alles als fehler angezeigt, aber compelieren tut ers trotzdem ohne probleme...
würd mich aber ehrlich gesagt auch mal interessieren woran das liegt das da keine hilfe angezeigt wird...

hier mal ein bsp. aus nem anderen beitrag wie ich das mit excel gemacht hab...

KLICK MICH

Brueckenhauer 26. Nov 2006 14:41

Re: Zahlenwerte an Excel übergeben (Zellen ansprechen)
 
hmm, hab mir das angeschaut aber komme da irgendwie nicht weiter....ich möchte das der das automatisch abspeichert aber Excel.Close(true, 'C:\test1.xls', False); scheint da wohl falsch zu sein, echt schade das man die bei Excel. keine weitere Hilfe kommt.

Chemiker 4. Dez 2006 20:15

Re: Zahlenwerte an Excel übergeben (Zellen ansprechen)
 
Hallo Mucki, Brueckenhauer und Andidreas,

die Hilfe die Ihr braucht steht unter Visual Basic-Editor, und da unter Hilfe nachschauen.

Unter Menü-Punkt: Extras
Makro
Visual Basic-Editor


Um an die Syntax der Excel-Befehl zu kommen kann es sinnvoll sein sie zuvor als Makro in Excel aufzeichnen zu lassen und anschliessend in Delphi umzusetzen.

Für das direkte Abspeichern könnte man so vorgehen (Das funktioniert aber nur, wenn die Datei noch nicht vorhanden ist.

Delphi-Quellcode:
procedure ExcelAbspeichern (m_Excel: Variant; ExcelDateiName: String);
begin

  m_Excel.ActiveWorkbook.Saved:= FALSE; // Excel schliessen ohne Nachfragen

  m_Excel.ActiveWorkbook.Close (saveChanges:= TRUE, FileName:= ExcelDateiName);
  m_Excel.Quit;
end;
Das UP wird dann so aufgerufen:
Delphi-Quellcode:
ExcelAbspeichern (Excel, 'c:\Test Excel Abspeichern.xls');
Die Anweisung : " Excel.Workbooks.Close;" muss dann natürlich aus dem Programm gelöscht werden.


Bis bald Chemiker

Thanatos81 4. Dez 2006 20:38

Re: Zahlenwerte an Excel übergeben (Zellen ansprechen)
 
Ich hätte auch ne Unit zum nativen schreiben von Excel-Dateien im Angebot. Vorteil: Excel muss auf dem Zielrechner nicht installiert sein, Nachteil: Nur Prozeduren zum Schreiben von Flaots, Integers und Strings. Keinerlei Formatierungsmöglichkeiten oder sonstiges.


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:20 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-2025 by Thomas Breitkreuz