Autor Beitrag
ThoPos
Hält's aus hier
Beiträge: 11

Windows, fast alle Versionen ab NT4
Delphi 2007, Delphi 10.1 Berlin
BeitragVerfasst: Di 30.08.16 11:12 
Hallo zusammen,

ich versuche zur Zeit verzweifelt eine per OLE verbundene Excel-Tabelle nach Duplikaten zu filtern.

In VBA funktioniert der folgende Befehl:
ausblenden Quelltext
1:
Worksheets("Tabelle").Range("$A$1:$B$100").RemoveDuplcates(Columns := Array(1, 2), Header := 1)					

In Delphi verbinde ich mich per OLE mit Excel und anschließend mit der Arbeitsmappe sowie der Tabelle:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
XL := GetActiveOleObject('Excel.Application');
WB := XL.Workbooks['Mappe1.xlsx'];
WS := WB.Worksheets['Tabelle1'];
WS.Range['$A$1:$B$100'].RemoveDuplicates(Columns := [color=red]?????[/color], Header := 1);


Mein Problem ist jetzt die Übergabe des Array [color=red]?????[/color]. Ich habe bereits mit der Array-Funktion "VarArrayCreate" experimentiert; nur leider ohne Erfolg.
Wenn ich nur nach einer Spalte reduzieren möchte, so funktioniert es. Dann kann man statt des Arrays einfach die Spaltennummer angeben.

Hat jemand von Euch eine Idee oder - noch besser - eine Lösung?

Gruß
Thomas

Moderiert von user profile iconNarses: I- durch Delphi-Tags ersetzt
Blup
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 173
Erhaltene Danke: 43



BeitragVerfasst: Mi 31.08.16 10:23 
Möglicherweise ist das Problem, das ein 0-basierendes Array als Parameter erwartet wird.
Versuchs mal so (ungetestet):
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
function OLEColumnsArray(const AColumns: array of Integer): OLEVariant;
var
  n, nMax: Integer;
begin
  nMax := High(AColumns);
  Result := VarArrayCreate([0, nMax], varVariant);
  for n := 0 to nMax do
    Result[n] := AColumns[n];
end;

WS.Range['$A$1:$B$100'].RemoveDuplicates(Columns := OLEColumnsArray([12]), Header := 1);
ThoPos Threadstarter
Hält's aus hier
Beiträge: 11

Windows, fast alle Versionen ab NT4
Delphi 2007, Delphi 10.1 Berlin
BeitragVerfasst: Do 01.09.16 07:12 
Hallo Blup,

super und vielen Dank! Das war's :-)

Gruß aus Köln
Thomas