Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Excel OLE Steuerung und Formeln (https://www.delphipraxis.net/173294-excel-ole-steuerung-und-formeln.html)

Rainer78 15. Feb 2013 14:55

Excel OLE Steuerung und Formeln
 
Hallo zusammen,

ich bin gerade dabei Daten aus meiner Anwendung nach Excel zu schreiben. Das funktioniert soweit auch ganz gut.

Code:
ExcelApp := GetActiveOleObject;
for i := 1 to Datensatzanzahl do
  begin
// ....
// LTitle und LNummer mit Daten füllen
// ...

   ExcelApp.Sheets[1].Cells[LZeile,1].Value := LTitle;
   ExcelApp.Sheets[1].Cells[LZeile,2].Value := LNummer;
   ExcelApp.Sheets[1].Cells[LZeile,3].Formula := '=VERKETTEN("*",$B$'+IntToStr(LZeile)+',"*")';
   ExcelApp.Range['D'+IntToStr(LZeile)+':D'+inttoStr(LZeile)].Select;
   ExcelApp.Selection.Font.Size := 22;
   ExcelApp.Selection.Font.Name := 'Ccode39';
  end;

ExcelApp.ActoveWorkBook.SaveAs(LDateiname);
ExcelApp.DisplayAlerts := False;
ExcelApp.Quit;
ExcelApp := Unassigned;
Es soll in der ersten Spalte ein Titel eingetragen werden, in der zweiten Spalte eine Nummer und in der dritten Spalte soll die Verknüpfung von *Nummer* erfolgen (also der Wert aus der zweiten Spalte mit * davor und dahinter).

Wenn ich das ausführe erhalte ich in der Zelle mit der Verkettung "#NAME?"

Ich muss in den Zellen mit der Formeln einmal mit "F2" den Editiermodus starten und diesen mit ENTER beenden. Dann wird die Formel richtig interpretiert und ich bekomme die Verkettung angezeigt die ich will.

Hat jemand eine Idee, woran das liegen könnte? Es sollte doch möglich sein, dass die Formel auch direkt richtig ausgewertet wird.

Gruß,

Rainer

Keldorn 15. Feb 2013 15:16

AW: Excel OLE Steuerung und Formeln
 
Hallo,

das ging so nicht, du kannst nicht Cell.Value, sondern mußt z.B. Cell.FormulaR1C1 verwenden. Da gabs glaube auch noch andere FormulaXyZ, mußt du mal schauen ;-)

gruß Frank

Rainer78 15. Feb 2013 15:32

AW: Excel OLE Steuerung und Formeln
 
Zitat:

Zitat von Keldorn (Beitrag 1203737)
das ging so nicht, du kannst nicht Cell.Value, sondern mußt z.B. Cell.FormulaR1C1 verwenden. Da gabs glaube auch noch andere FormulaXyZ, mußt du mal schauen ;-)

Sorry hatte mich verschrieben gehabt. Ich habe es oben korrigiert. Habe .Formula anstatt .Value bei der Formel verwendet.

Jumpy 15. Feb 2013 15:32

AW: Excel OLE Steuerung und Formeln
 
.FormulaLocal
gibts da afaik noch. Und wenn du mit Verketten schon die dt. Version des Befehls nimmst...

und ansonsten immer direkt in Excel selbst per VBA mit Hilfe rumprobieren, da findet sich die Lösung leichter und man muss das dann nur noch nach Delphi übertragen.

Keldorn 15. Feb 2013 16:02

AW: Excel OLE Steuerung und Formeln
 
Langsam kommt das Gedächtnis auch wieder. Ich glaube, da war noch ein Haken, mußte man die Formeln nicht auch englisch übergeben?
Evtl probier erstmal eine andere einfachere Formel wie "wenn/If". Weiß jetzt grade nicht, was verketten im Excel auf englisch heißt. Aber es gab glaube regelrechte Tabellen mit den Übersetzungen im Inet.

Rainer78 15. Feb 2013 16:11

AW: Excel OLE Steuerung und Formeln
 
@Keldorn: Danke, der Hinweis mit dem englischen Befehl war Gold wert. Die Formel von =Verketten umgewandelt in =CONCATENATE und schon funktioniert es.

Keldorn 15. Feb 2013 16:24

AW: Excel OLE Steuerung und Formeln
 
aber gugg wirklich nochmal, was die einzelnen .FormulaXYZ bedeuten ;-). Gibts ja zu Hauf Office-Foren, die sich damit beschäftigen.
Bei mir ist das zu lange her und ich weiß nicht mehr, wann es welche Version gab oder auch nicht gab ;-)


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:39 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