![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
передать данные из excel в приложение [D7, Win2k]
Rater1 © (2006-07-11 16:01:00)чем лучше воспользоваться для передачи данных из excel`я в приложение? Пробовал OLE, но в нём надо регистрить сервер, а для этого права админа надо - хочется без этого...
Хочется что то вроде DDE, только поудобнее...
Rater1 (2006-07-13 15:32:00) [1]dde вроде таже dll только готовая ...
Вот я не пойму почему после запуска макроса всё встаёт, т.е. флаг waitstat не сбрасывается...
Сделаю новую ветку про дде...
evvcom (2006-07-13 12:34:00) [2]> описание dde где-нить есть под рукой?
А нафиг тебе dde? Чего ты к нему прицепился-то? Реализуй через DLL и без DDE.
Сергей М. (2006-07-13 12:22:00) [3]А если вместо Showmessage() "вставить" MessageBox() ?
Rater1 (2006-07-13 10:29:00) [4]Ок. Dll - вариант.
описание dde где-нить есть под рукой?
А то никак не пойму почему если в событии OnPoke сервера вставить ShowMessage то работать перестает...
PS Пойду пока поищу в поисковике ...
Сергей М. (2006-07-13 10:25:00) [5]
> как сервер может инициировать соединение с приложением?
По OLE/COM - никак.
Инициатором соединения всегда является контроллер, а контроллером в твоем случае выступает твое приложение.
Впрочем ничто не мешает реализовать некую DLL, в которой осуществляется обращение к твоему приложению с использованием любых иных коммуникуционных механизмов/технологий, нежели OLE/COM. Ф-ции этой DLL легко вызвать в макросе.
Rater1 (2006-07-13 10:07:00) [6][10] А как сервер может инициировать соединение с приложением?
(excel - сервер и "моя программа" - клиент)
_RusLAN (2006-07-12 10:12:00) [7]Может, если изловчиться/извратиться то что-то типа этого поможет:
"Создание средствами Delphi DLL библиотек для использования в макросах Excel"
http://www.kornjakov.ru/stat.htm#s18
Сергей М. (2006-07-12 09:55:00) [8]
> Постоянно опрашивать ячейку?
Зачем ? Объект ExcelWorksheet имеет событие OnChange, оно и известит контроллер о факте изменения.
Rater1 (2006-07-12 09:51:00) [9]Какие способы?
Постоянно опрашивать ячейку?
А если имя книги поменяется... в программе вбивать?
Сергей М. (2006-07-12 08:13:00) [10]
> Rater1 (12.07.06 06:52) [7]
Зачем так усложнять задачу ?
Приложение- контроллер(твое приложение) устанавливает связь с Excel-сервером и отслеживает тем или иным образом (способы имеются) событие нажатия кнопки. По факту обнаружения нажатия контроллер запрашивает у сервера некоторые данные, обрабатывает их нужным образом и передает результаты обработки серверу.
Rater1 (2006-07-12 06:52:00) [11]...передаёт В приложение, которое что-то в базе делает и возвращает
результат...
сорри предлог забыл :-)
> Переформулируй задачу точнее ..
попытаюсь...
а если клиент - excel? Т.е. пользователь в экселе данные выделяет - что то делает и при нажатии кнопки (макрос VB) Excel передаёт в приложение некоторые данные, приложение что-то в базе делает и возвращает результат в Excel ...
Т.е. инициатор передачи данных "кнопка" в экселе.
Обычно инициатором передачи данных в Excel является приложение (Excel -OLE сервер, приложение клиент). Мне надо чтобы инициатором был Excel - приложение было сервером (или оба одинаковы)...
DDE идеологически подходит, но как-то кривовато работает...
Сергей М. (2006-07-11 16:58:00) [12]
> передаёт приложение которое что-то в базе делает и возвращает
> результат
Абракадабра какая-то ..
Переформулируй задачу точнее ..
Rater1 (2006-07-11 16:48:00) [13]а если клиент - excel?: пользователь в экселе данные выделяет - что то делает и при нажатии кнопки (макрос VB) передаёт приложение которое что-то в базе делает и возвращает результат...
Т.е. инициатор действия "кнопка" в экселе.
Сергей М. (2006-07-11 16:42:00) [14]
> мое приложение - сервер. (правильно?)
Нет, не правильно. Сервер - это Excel, а твое приложение - это контроллер.
> OLE сервер регистрируется в реестре - права админа нужны
Тот кто успешно инсталлировал Excel, тот , очевидно, имел соответствующие права.
И поскольку инсталляция Excel'а была успешно выполнена, в реестр при этом были внесены соотв.записи, регистрирующие Excel как олей-сервер.
Твоё же приложение-контроллер не требует никакой регистрации для того чтобы использовать любой зарегистрированный в систем олей-сервер автоматизации, в т.ч. Excel.
Плохиш (2006-07-11 16:42:00) [15]
> Rater1 (11.07.06 16:38) [2]
> если мне требуется передать данные из excel в моё приложение
Может стоит фразу переписать в виде "если мне требуется получить данные из екселя в моя приложение"? Тогда и приложение сразу клиентом становиться ;-)
Rater1 (2006-07-11 16:38:00) [16]если мне требуется передать данные из excel в моё приложение, то мое приложение - сервер. (правильно?) а OLE сервер регистрируется в реестре - права админа нужны....
Сергей М. (2006-07-11 16:31:00) [17]
> в нём надо регистрить сервер
Excel при инсталляции обязательнорегистрирует себя в реестре как ole-сервер автоматизации.
О какой еще регистрации может идти речь - не понятно ..