Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

передать данные из 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-сервер автоматизации.

О какой еще регистрации может идти речь - не понятно ..


Наверх

Титульная страница Поиск, карта сайта Написать письмо