Текущий архив: 2002.12.26;
Скачать: CL | DM;
ВнизExcel Найти похожие ветки
← →
Igor_thief (2002-11-10 21:33) [0]Дорогие Мастера. Как программно можно найти нужную ячейку в таблице Excel’я не перебирая при этом все ячейки в цикле (вызвать стандартный диалог поиска строки в Excel не показывая его пользователю)? Мне для решения задачи надо определить номер рядка в котором находится указанная строка. Excel Xp, Windows Xp.
← →
vidiv (2002-11-11 02:33) [1]Я знаю, но я не Мастер. :(
← →
Рыжик (2002-11-11 08:41) [2]Range:=Workbook.Cells.Find("tra-la-la",EmptyParam, EmptyParam, ...)
← →
Igor_thief (2002-11-11 16:35) [3]Рыжик © (11.11.02 08:41)
Спасибо. Я проверю.
← →
Igor_thief (2002-11-11 20:08) [4]Рыжик © (11.11.02 08:41)
Я попробовал, но этот вариант не работает. Выдается ошибка конвертации типов. Ты не мог бы привести примерчик по-подробние. Написать маленькую прогу которая реализовует сабж? Зарание благодарен. Я при работе с Excel использую компоненты ExcelApplication, ExcelWorkBook... с вкладки Servers.
vidiv © (11.11.02 02:33)
Раскажи.
← →
Рыжик (2002-11-12 11:25) [5]
procedure TForm1.Button1Click(Sender: TObject);
var i:integer;
ISheet:_Worksheet;
IR,FoundRange:Excel2000.Range;
begin
IDispatch(ISheet) := ExcelApplication1.ActiveWorkbook.Worksheets.Item["Sheet1"];
IDispatch(IR) := Olevariant(ISheet).Cells;
IDispatch(FoundRange) := OleVariant(IR).Find(What:="tra-la-la", LookIn := xlValues, LookAt := xlWhole);
if FoundRange<>nil then
begin
i:=FoundRange.Row;
ShowMessage(IntToStr(i));
end
else ShowMessage("Ничего не найдено");
end;
← →
Igor_thief (2002-11-15 20:10) [6]Рыжик © (12.11.02 11:25)
Спасибочки, я попробую.
← →
Igor_thief (2002-11-15 20:30) [7]Office Xp, Windows Xp.
Список ошибок которые выдает компилятор D7:
Build
[Error] Unit1.pas(44): Undeclared identifier: "Excel2000" //IR,FoundRange:Excel2000.Range;
[Error] Unit1.pas(44): "," or ":" expected but ";" found
[Error] Unit1.pas(45): Type expected but "BEGIN" found
[Error] Unit1.pas(49): Operator not applicable to this operand type //if FoundRange<>nil then
[Error] Unit1.pas(51): Missing operator or semicolon //i:=FoundRange.Row;
[Fatal Error] Project1.dpr(5): Could not compile used unit "Unit1.pas"
← →
Рыжик (2002-11-19 08:56) [8]Excel2000 - это у меня. Надо написать свою версию. Если вы используете компоненты с закладки Servers, то посмотрите, какой модуль там указывается в uses и замените Excel2000 в приведённом коде на нужный. Хотя можно и вообще это дело опустить и написать так: IR,FoundRange:Range; Тогда получите что-то типа "warning: symbol "Range" is specific to a platform". Но работать всё-равно должно.
← →
Igor_thief (2002-11-19 13:01) [9]Я проверю!
← →
Igor_thief (2002-12-07 13:13) [10]Не работает!
← →
Neox (2002-12-07 13:25) [11]Долго, однако, проверял :)
← →
Igor_thief (2002-12-07 21:49) [12]To Neox ©
Да я сразу проверил, но в форум долго не писал. Я писал сразу на мыло к Рыжик.
Страницы: 1 вся ветка
Текущий архив: 2002.12.26;
Скачать: CL | DM;
Память: 0.46 MB
Время: 0.007 c