Delphi 控制 Excel - 通过 Delphi 从命名范围 Excel 中删除重复项

问题描述 投票:0回答:1

我正在使用Delphi 7编写一个从Excel读取数据的程序。 Excel 文件包含两列数据。 现在我需要通过 Delphi 从 Excel 范围中删除重复项。

如果有帮助的话,VBA宏代码如下:

ActiveSheet.Range("$A$1:$B$42").RemoveDuplicates Columns:=Array(1, 2), Header _
        :=xlYes

Excel_TLB程序如下:

procedure RemoveDuplicates(Columns: OleVariant; Header: XlYesNoGuess); 

VBA 帮助中的符号:Columns - 包含重复信息的列索引的变体数组。

我的代码如下:

procedure TForm1.PuskBClick(Sender: TObject);
var
  FExcel, FSheet, FBook: Variant;
  MyColumns: OleVariant;
begin

// open file
 if OpenDialog.Execute then
  begin
// create Excel
   FExcel := CreateOleObject('Excel.Application');
   FExcel.Visible := true;

   if not VarIsEmpty(FExcel) then // if not empty then
    begin
// open real file Excel and define workbook
     FBook:=FExcel.Workbooks.Open(OpenDialog.FileName); 
// off any Alerts
     FExcel.DisplayAlerts := false; 
// define WorkSheet
     FSheet := FBook.WorkSheets[1]; 
// create array for define columns numbers
     MyColumns:= VarArrayCreate([1,1,1,2], varVariant);
     MyColumns[1,1]:=1; // column 1
     MyColumns[1,2]:=2; // column 2
//call the procedure
     FSheet.Range['A1','B42'].RemoveDuplicates(MyColumns[1,1], xlYes);
    end;
  end;
end;

此代码工作正常,但计算仅在第一列上完成。 如果我更改索引,则仅在第二列上进行计算。

FSheet.Range['A1','B42'].RemoveDuplicates(MyColumns[1,2], xlYes);

我应该如何一次为两列指定一个数组?

非常感谢任何帮助或想法。 谢谢!

excel delphi delphi-7
1个回答
0
投票

我得到了答案。

需要使用程序:

FSheet.Range['A1','B42'].RemoveDuplicates(VarArrayOf([1,2]), xlYes);

其中 [1,2] - 是 Excel 工作表中列的索引

没错。

谢谢你帮助我!

© www.soinside.com 2019 - 2024. All rights reserved.