![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
опять Excel... поиск по листам? [D7, WinXP]
misha123 © (2004-09-22 20:46:00)Знаю, что Excel'ем все уже замучались :), но вроде мой вопрос нигде не освещался:
нужно сделать поиск в Excel файле. Информация разбита по листам в одном файле. Как-то нужно вызвать функцию "Поиск по всем листам в книге" - в Excel'е так и называется - "Найти и заменить".
Записать-прочитать данные - не проблема, а вот для поиска макрос не поможет.
Работаю, как:
ex: OleVariant;
ex:=CreateOleObject('Excel.Application');
Спасибо.
misha123 (2004-09-28 13:01:00) [1]я все это уже смотрел - толкового ничего нет (вернее функцию саму нашел, но непонятно какие параметры ей надобно передавать - пробовал те, которые были в макросе, не помогло...).
Сделал через запуск макроса (поиск) из своей программки, но проблема новая - если ничего не найдено - у бейсика возникает эксепшион и останов, соответственно я тоже валюсь...
Что здесь можно сделать? (например, как сказать бейсику чтобы не стопил процесс, а просто говорил через какую-нибудь переменную - не нашел)
YurikGL (2004-09-22 21:41:00) [2]
> misha123 (22.09.04 20:46)
Кроме написания макросов есть еще один способ получения синтаксиса нужных функций.
Например, нам надо переименовать лист макрос, если я не ошибаюсь, как раз
> Sheets("Ëèñò1").Select
> Sheets("Ëèñò1").Name = "123"
В этом случае, кидаем на форму компонент ExcelSheet, набираем в любой процедуре ExcelSheet. и нажимаем ctrl+пробел. Потом там внимательно изучаем появившийся список. Там есть простые функции которых с помощью макроса никогда не получишь.
Потом те же самые функции и свойства можно использовать в ex: OleVariant;
misha123 (2004-09-22 21:22:00) [3]Да... еще есть что добавить :)
Для первого вопроса записал макрос:
Range("B18").Select
ActiveCell.FormulaR1C1 = "1234"
Range("E29").Select
Cells.Find(What:="123", After:=ActiveCell, LookIn:=xlFormulas, LookAt:= _
xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False _
, SearchFormat:=False).Activate
Здесь непонятно как вызвать из delphi cells.find(....).activate
Второй вопрос: нужно удалять-добавлять-вставлять новые строки или столбцы.
Макрос прилагается:
Rows("11:11").Select
Selection.Insert Shift:=xlDown
Rows("15:15").Select
Selection.Delete Shift:=xlUp
Sheets("Ëèñò1").Select
Sheets("Ëèñò1").Name = "123"
Range("C12").Select
Надеюсь, что бить никто не будет :)