AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Zelleninhalt in Excel rechts ausrichten
Thema durchsuchen
Ansicht
Themen-Optionen

Zelleninhalt in Excel rechts ausrichten

Ein Thema von Chrischan · begonnen am 19. Sep 2005 · letzter Beitrag vom 5. Mai 2020
Antwort Antwort
Chrischan

Registriert seit: 5. Sep 2005
1 Beiträge
 
#1

Zelleninhalt in Excel rechts ausrichten

  Alt 19. Sep 2005, 15:22
HAllo,
ich möchte in meinem Programm den Zelleninhalt rechts ausrichten. Dazu bediene ich mich folgenden Codes:


Delphi-Quellcode:
Worksheet.Range['E4', 'E4'].EntireColumn.HorizontalAlignment := xlHAlignRight;
Worksheet.Range['F4', 'F4'].EntireColumn.HorizontalAlignment := xlHAlignRight;
mit Worksheet : OleVariant;


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?
Angehängte Grafiken
Dateityp: tif unbenannt-1_801.tif (271,2 KB, 9x aufgerufen)
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#2

Re: Zelleninhalt in Excel rechts ausrichten

  Alt 19. Sep 2005, 16:09
Hi Chrischan,

herzlich willkommen in der Delphi-PRAXiS.

Ich kann es gerade nicht überprüfen, aber hast du es vielleicht schonmal so probiert:

WorkSheet.Columns(5).HorizontalAlignment := xlRight; Grüße vom marabu
  Mit Zitat antworten Zitat
Turbo78

Registriert seit: 19. Apr 2010
Ort: Neuried
32 Beiträge
 
Delphi 7 Enterprise
 
#3

AW: Zelleninhalt in Excel rechts ausrichten

  Alt 5. Nov 2017, 18:00
HAllo,
ich möchte in meinem Programm den Zelleninhalt rechts ausrichten. Dazu bediene ich mich folgenden Codes:


Delphi-Quellcode:
Worksheet.Range['E4', 'E4'].EntireColumn.HorizontalAlignment := xlHAlignRight;
Worksheet.Range['F4', 'F4'].EntireColumn.HorizontalAlignment := xlHAlignRight;
mit Worksheet : OleVariant;


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?
Ich habe die gleiche Fehlermeldung bekommen.
Ü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
  Mit Zitat antworten Zitat
kompi

Registriert seit: 27. Apr 2012
Ort: Duisburg
55 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: Zelleninhalt in Excel rechts ausrichten

  Alt 6. Nov 2017, 10:15
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
Detlef Schmitz
  Mit Zitat antworten Zitat
Turbo78

Registriert seit: 19. Apr 2010
Ort: Neuried
32 Beiträge
 
Delphi 7 Enterprise
 
#5

AW: Zelleninhalt in Excel rechts ausrichten

  Alt 20. Nov 2017, 18:32
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
  Mit Zitat antworten Zitat
kompi

Registriert seit: 27. Apr 2012
Ort: Duisburg
55 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: Zelleninhalt in Excel rechts ausrichten

  Alt 21. Nov 2017, 09:17
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
Angehängte Dateien
Dateityp: pas ExcelTools.pas (17,8 KB, 24x aufgerufen)
Detlef Schmitz
  Mit Zitat antworten Zitat
Jakson

Registriert seit: 10. Mär 2006
34 Beiträge
 
#7

AW: Zelleninhalt in Excel rechts ausrichten

  Alt 5. Mai 2020, 17:21
Ü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:
SetHAlign_Center(Range:Variant);
var HAlign : DWord;
begin
 HAlign := $FFFFEFF5;
 Range.HorizontalAlignment := TOleEnum(HAlign);
end;
Irgendwann wurde die Logik auf 64Bit umgestellt und die Konvertierung funktionierte so nicht mehr.
Jetzt akzeptiert Excel nur mehr Integers:
Delphi-Quellcode:
SetHAlign_Center(Range:Variant);
var HAlign : Integer;
begin
 HAlign := -4107;
 Range.HorizontalAlignment := HAlign;
end;
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:02 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