Zelleninhalt in Excel rechts ausrichten
Liste der Anhänge anzeigen (Anzahl: 1)
HAllo,
ich möchte in meinem Programm den Zelleninhalt rechts ausrichten. Dazu bediene ich mich folgenden Codes:
Delphi-Quellcode:
mit Worksheet : OleVariant;
Worksheet.Range['E4', 'E4'].EntireColumn.HorizontalAlignment := xlHAlignRight;
Worksheet.Range['F4', 'F4'].EntireColumn.HorizontalAlignment := xlHAlignRight; hab es bei meinem freund so compiliert und alles hat funktioniert. jetzt will ich es bei mir einbinden und es kommt folgender fehler, wenn ich auf die routine zugreife, also erst während des programmlaufs: EOleException: Die HorizontalAlignment-Eigenschaft des Range Objekts kann nicht festgelegt werden. Wo liegt der Fehler? |
Re: Zelleninhalt in Excel rechts ausrichten
Hi Chrischan,
herzlich willkommen in der Delphi-PRAXiS. Ich kann es gerade nicht überprüfen, aber hast du es vielleicht schonmal so probiert:
Delphi-Quellcode:
Grüße vom marabu
WorkSheet.Columns(5).HorizontalAlignment := xlRight;
|
AW: Zelleninhalt in Excel rechts ausrichten
Zitat:
Übrigens, die Fehlermeldung ist unabhängig davon wie man ein "Range" definiert - kommt auch wenn man nur eine Zelle selektiert. Kennt jemand die Lösung. Delphi Tokyo 10.2, Excel 2010 |
AW: Zelleninhalt in Excel rechts ausrichten
Bei mir funktioniert diese Lösung mit Excel 2010, Tokyo 10.2 und Windows 10:
Delphi-Quellcode:
Hierbei ist fexcel folgendermaßen deklariert:xlBottom = -4107; xlCenter = -4108; xlDistributed = -4117; xlJustify = -4130; xlTop = -4160; xlLeft = -4131; xlRight = -4152; function Texcel.selectrange(xfrom, yfrom, xto, yto : integer) : olevariant; var ra : olevariant; begin ra := fexcel.range[fexcel.cells[yfrom,xfrom],fexcel.cells[yto,xto]]; result := ra.select; end; procedure Texcel.alignrange(xfrom: Integer; yfrom: Integer; xto: Integer; yto: Integer; xalign: Integer; yalign: Integer); var ra : olevariant; begin ra := selectrange(xfrom,yfrom,xto,yto); fexcel.selection.HorizontalAlignment := xalign; fexcel.selection.VerticalAlignment := yalign; end; Fexcel := createoleobject('Excel.Application'); xalign und yalign werden durch die obigen Konstanten gesetzt. Gruß Kompi |
AW: Zelleninhalt in Excel rechts ausrichten
Zitat:
Das Problem bei mir ist die fehlende Deklarationsdatei für die EXCEL Konstanten (und Prozeduren). Diese (falschen) habe ich aus Delphi7 übernommen:
Code:
Wenn ich also die Delphi 7 Konstante xlCenter durch -4108 ersetze, funktioniert es bei mir ohne die vorgeschlagene Änderung zu implementieren.
Delphi 7
xlBottom = $FFFFEFF5; xlCenter = $FFFFEFF4; xlDistributed = $FFFFEFEB; xlJustify = $FFFFEFDE; xlTop = $FFFFEFC0; xlLeft = $FFFFEFDD; xlRight = $FFFFEFC8; Tokyo 10.2 xlBottom = -4107; xlCenter = -4108; xlDistributed = -4117; xlJustify = -4130; xlTop = -4160; xlLeft = -4131; xlRight = -4152;
Code:
Also die Frage: wo sind die Konstanten (und die Prozeduren) in Tokyo 10.2 definiert?
// appExcel.Selection.HorizontalAlignment := xlCenter; // funktioniert nicht
appExcel.Selection.HorizontalAlignment := -4108; // funktioniert Vielen Dank nochmals. Gruß, Toni |
AW: Zelleninhalt in Excel rechts ausrichten
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo Turbo78,
der Codeausschnitt aus meinem letzten Posting entstammt einer Klasse, die ich für mich selber erstellt habe. In dieser Klasse wird Excel mittels COM aufgerufen (createoleobject). Die einzelnen Funktionen habe ich eigentlich nach dem Ergebnis des Excel - Makrorekorders in Delphi erstellt. So bin ich auch an die Konstanten gekommen, da die Werte beim Ausführen des Makros in Excel ja angezeigt werden können. Diese Konstanten habe ich dann in der Unit, in der auch die Klasse enthalten ist, selber definiert. Die in Delphi enthaltenen Com Server ( Installationspfad\OCX\Server) habe ich gar nicht benutzt. Ich habe diese Unit mal angehängt. Ist sicherlich nichts besonderes, aber vielleicht hilft es ja weiter. Gruß Kompi |
AW: Zelleninhalt in Excel rechts ausrichten
Über diesen Fehler bin ich auch vor kurzen gestolpert:
Soviel ich das verstehe sind die zwei Ausdrücke $FFFFEFF5 und -4107 sind gleich sobald sie in einem DWord gespeichert werden; Ich kann nicht genau sagen ab wann Excel die Änderung vorgenommen hat aber ab einer bestimmten Excel Version oder Update habe ich immer wieder diesen Fehler bekommen. Ich habe ein Programm laufen das genau die alte Logik verwendet und seit Jahren im Einsatz ist. Da das setzen der Ausrichtung in Try-Except Blöcken gesetzt ist wurde der Fehler auch lange nicht gefunden. Vor der Änderung war es üblich die Konstante in einem DWord zu speichern und als TOleEnum an Excel zu senden:
Delphi-Quellcode:
Irgendwann wurde die Logik auf 64Bit umgestellt und die Konvertierung funktionierte so nicht mehr.
SetHAlign_Center(Range:Variant);
var HAlign : DWord; begin HAlign := $FFFFEFF5; Range.HorizontalAlignment := TOleEnum(HAlign); end; Jetzt akzeptiert Excel nur mehr Integers:
Delphi-Quellcode:
SetHAlign_Center(Range:Variant);
var HAlign : Integer; begin HAlign := -4107; Range.HorizontalAlignment := HAlign; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10: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