Entwickler-Ecke

Sonstiges (Delphi) - Sortieren in excel????


andreas_kopp - Di 17.08.04 11:39
Titel: Sortieren in excel????
Hallo zusammen,
ich versuche seit einigen tagen verzweifelt von delphi aus einige splaten in excel zu sortieren. aber irgenwie hat er keine lust das zu tun... ich habe bisher folgendes probiert:

excel.selection.Columns.Sort('Key1:=Range(''A2''), Order1:=1, Order2:=1, Header:=1, OrderCustom:=1, MatchCase:=False, Orientation:=1');

aus einem makro habe ich:

{ Columns("A:C").Select
Range("C1").Activate
Selection.Sort Key1:=Range("B2"), Order1:=xlAscending, Header:=xlYes, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom }

allerdings hat bis jetzt nicht einmal folgender befehl funktioniert:

excel.Columns('A:B').Select;

kann mir bitte jemand helfen bvor ich noch in meine tastatur beisse.. :roll:

vielen dank
bis dann
andy


andreas_kopp - Di 17.08.04 11:48

Verbesserung... Fehlerteufel...

Hallo zusammen,
ich versuche seit einigen tagen verzweifelt von delphi aus einige splaten in excel zu sortieren. aber irgenwie hat er keine lust das zu tun... ich habe bisher folgendes probiert:

excel.Selection.Columns.Sort('Key1:=Range(''B2''), Order1:=1, Key2:=Range(''A2''), Order2:=1, Header:=1, OrderCustom:=1, MatchCase:=False, Orientation:=1');

aus einem makro habe ich:

{ Columns("A:C").Select
Selection.Sort Key1:=Range("B2"), Order1:=xlAscending, Key2:=Range("A2") _
, Order2:=xlAscending, Header:=xlYes, OrderCustom:=1, MatchCase:=False _
, Orientation:=xlTopToBottom }

allerdings hat bis jetzt nicht einmal folgender befehl funktioniert:

excel.Columns('A:B').Select;

kann mir bitte jemand helfen bvor ich noch in meine tastatur beisse..

vielen dank
bis dann
andy


Bronstein - Mi 01.07.09 13:33

Hallo,
ich habe jetzt dasseelbe Problem.

Gibt es eine Lösung für das Problem?


BenBE - Mi 01.07.09 14:08

Wird COM\DCOM-Automation genutzt (Also über OleObjects) oder werden die Interfaces über IDL genutzt?

Bei ersterem einfach den Befehl auf Pascal-Syntax schreiben. Dabei beachten, den richtigen Scope zu treffen.

Ansonsten einfach mal durch die Interfaces hangeln.

Zur Umsetzung der VB-Syntax für Delphi vielleicht mal soviel:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
SheetObj.Selection.Columns.Sort(
    Key1:={Excel-VBA-Hilfe nachgucken}.Range('B2'), 
    Order1:=1,
    Key2:={Excel-VBA-Hilfe nachgucken}Range('A2'), 
    Order2:=1
    Header:=1
    OrderCustom:=1
    MatchCase:=False, 
    Orientation:=1);

Das funktioniert aber nur bei Ole-Automation und nicht bei explizit importierten Interfaces. Das bedingt allerdings, dass die Umsetzung dieses Befehls zur Laufzeit geschieht und somit WESENTLICH langsamer ist, als die Nutzung über COM\DCOM.


Bronstein - Mi 01.07.09 14:09

Hab was gefunden:


Delphi-Quelltext
1:
2:
Excel.Range['A1:J'+IntToStr(zeile)].Select;
Excel.Selection.Sort(Excel.Range['C2'], 1 , EmptyParam, Excel.Range['A2'], 1, Excel.Range['B2'], 1);