Поиск в Excel через Delphi
Запарился с поиском в Excel через Delphi.
На строке sr:=...(см. код) выдает "несовпадение типов".
Я наверное неправильно строю .Find. Подскажите, пожалуйста, как сделать правильно. Зараннее благодарю. Kraw.
Фрагмент кода:
var
Excel, WorkBook_I, Sheet_I, v: Variant;
ii,k: integer;
s,sr: string;
begin
.........
Excel.SheetsInNewWorkbook := 1;
WorkBook_I := Excel.WorkBooks.Open(Filename_I.Text);
Sheet_I := WorkBook_I.WorkSheets[1];
.........
s:='Значение, которое нужно найти';
ii:=Sheet_I.Cells.CurrentRegion.Rows.Count;
k:=0;
sr:=Sheet_I.Range['A5:'+'A'+IntToStr(ii)].Find(s,'xlValues'); // ????
if Sheet_I.Range['A5:'+'A'+IntToStr(ii)].Nothing then // ????
k:=1; //Если удача
.........
end;
Попробуй описать sr как Variant или как PChar, может быть, поможет.
Цитата:
Originally posted by kraw
Здравствуйте, уважаемые знатоки.
Запарился с поиском в Excel через Delphi.
На строке sr:=...(см. код) выдает "несовпадение типов"...
Здравствуйте, уважаемые знатоки.
Запарился с поиском в Excel через Delphi.
На строке sr:=...(см. код) выдает "несовпадение типов"...
Вот так точно работает:
Var
Range:OleVariant;
Uslovie,FirstAddress:String;
begin
..
..
VarClear(Range);
Range:=Whence_WorkSheets.Range[Edit1.Text[1]+':'+Edit1.Text[1]].Find(
What:=Uslovie,
LookIn := xlValues,
SearchOrder:=xlByColumns,
SearchDirection := xlNext);
if not VarIsEmpty(Range) then begin
FirstAddress := Range.Address;
end;
далее посмотри как выглядит FirstAddress т обрабатывай как хош
Цитата:
Originally posted by Aleksoid
Вот так точно работает:
Var
Range:OleVariant;
Uslovie,FirstAddress:String;
begin
..
..
VarClear(Range);
Range:=Whence_WorkSheets.Range[Edit1.Text[1]+':'+Edit1.Text[1]].Find(
What:=Uslovie,
LookIn := xlValues,
SearchOrder:=xlByColumns,
SearchDirection := xlNext);
if not VarIsEmpty(Range) then begin
FirstAddress := Range.Address;
end;
далее посмотри как выглядит FirstAddress т обрабатывай как хош
Вот так точно работает:
Var
Range:OleVariant;
Uslovie,FirstAddress:String;
begin
..
..
VarClear(Range);
Range:=Whence_WorkSheets.Range[Edit1.Text[1]+':'+Edit1.Text[1]].Find(
What:=Uslovie,
LookIn := xlValues,
SearchOrder:=xlByColumns,
SearchDirection := xlNext);
if not VarIsEmpty(Range) then begin
FirstAddress := Range.Address;
end;
далее посмотри как выглядит FirstAddress т обрабатывай как хош
работает. Жму руку. С уважением, kraw.