Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Поиск в Excel через Delphi

10K
19 июня 2005 года
kraw
6 / / 19.06.2005
Здравствуйте, уважаемые знатоки.
Запарился с поиском в 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;
8.7K
20 июня 2005 года
XXXX Pro
47 / / 20.06.2005
Попробуй описать sr как Variant или как PChar, может быть, поможет.
10K
24 июня 2005 года
Aleksoid
4 / / 25.05.2005
Цитата:
Originally posted by kraw
Здравствуйте, уважаемые знатоки.
Запарился с поиском в 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 т обрабатывай как хош

10K
24 июня 2005 года
kraw
6 / / 19.06.2005
Цитата:
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 т обрабатывай как хош

10K
24 июня 2005 года
kraw
6 / / 19.06.2005
Aleksoid, спасибо за ответ. Я уже разобрался в этом вопросе. Действительно, твое построение точно
работает. Жму руку. С уважением, kraw.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог