Bei mir funktioniert diese Lösung mit Excel 2010, Tokyo 10.2 und Windows 10:
Delphi-Quellcode:
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;
Hierbei ist fexcel folgendermaßen deklariert:
Fexcel := createoleobject('Excel.Application');
xalign und yalign werden durch die obigen Konstanten gesetzt.
Gruß Kompi
Vielen Dank, leider habe ich mich mit diesem Thema erst seit gestern wieder befassen können.
Das Problem bei mir ist die fehlende Deklarationsdatei für die EXCEL Konstanten (und Prozeduren). Diese (falschen) habe ich aus Delphi7 übernommen:
Code:
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;
Wenn ich also die Delphi 7 Konstante xlCenter durch -4108 ersetze, funktioniert es bei mir ohne die vorgeschlagene Änderung zu implementieren.
Code:
// appExcel.Selection.HorizontalAlignment := xlCenter; // funktioniert nicht
appExcel.Selection.HorizontalAlignment := -4108; // funktioniert
Also die Frage: wo sind die Konstanten (und die Prozeduren) in Tokyo 10.2 definiert?
Vielen Dank nochmals.
Gruß, Toni