Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.08.27;
Скачать: CL | DM;

Вниз

передать данные из excel в приложение   Найти похожие ветки 

 
Rater1   (2006-07-11 16:01) [0]

чем лучше воспользоваться для передачи данных из excel`я в приложение? Пробовал OLE, но в нём надо регистрить сервер, а для этого права админа надо - хочется без этого...
Хочется что то вроде DDE, только поудобнее...


 
Сергей М. ©   (2006-07-11 16:31) [1]


> в нём надо регистрить сервер


Excel при инсталляции обязательно регистрирует себя в реестре как ole-сервер автоматизации.

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


 
Rater1   (2006-07-11 16:38) [2]

если мне требуется передать данные из excel в моё приложение, то мое приложение - сервер. (правильно?) а OLE сервер регистрируется в реестре - права админа нужны....


 
Плохиш ©   (2006-07-11 16:42) [3]


> Rater1   (11.07.06 16:38) [2]
> если мне требуется передать данные из excel в моё приложение

Может стоит фразу переписать в виде "если мне требуется получить данные из екселя в моя приложение"? Тогда и приложение сразу клиентом становиться ;-)


 
Сергей М. ©   (2006-07-11 16:42) [4]


> мое приложение - сервер. (правильно?)


Нет, не правильно. Сервер - это Excel, а твое приложение - это контроллер.


> OLE сервер регистрируется в реестре - права админа нужны


Тот кто успешно инсталлировал Excel, тот , очевидно, имел соответствующие права.
И поскольку инсталляция Excel"а была успешно выполнена, в реестр при этом были внесены соотв.записи, регистрирующие Excel как олей-сервер.

Твоё же приложение-контроллер не требует никакой регистрации для того чтобы использовать любой зарегистрированный в систем олей-сервер автоматизации, в т.ч. Excel.


 
Rater1   (2006-07-11 16:48) [5]

а если клиент - excel?: пользователь в экселе данные выделяет - что то делает и при нажатии кнопки (макрос VB)  передаёт приложение которое что-то в базе делает и возвращает результат...
Т.е. инициатор действия "кнопка" в экселе.


 
Сергей М. ©   (2006-07-11 16:58) [6]


> передаёт приложение которое что-то в базе делает и возвращает
> результат


Абракадабра какая-то ..

Переформулируй задачу точнее ..


 
Rater1   (2006-07-12 06:52) [7]

...передаёт В приложение, которое что-то в базе делает и возвращает
результат...

сорри предлог забыл :-)


> Переформулируй задачу точнее ..


попытаюсь...

а если клиент - excel? Т.е. пользователь в экселе данные выделяет - что то делает и при нажатии кнопки (макрос VB) Excel передаёт в приложение некоторые данные, приложение что-то в базе делает и возвращает результат в Excel ...
Т.е. инициатор передачи данных "кнопка" в экселе.
Обычно инициатором передачи данных в Excel является приложение (Excel -OLE сервер, приложение клиент). Мне надо чтобы инициатором был Excel - приложение было сервером (или оба одинаковы)...
 DDE идеологически подходит, но как-то кривовато работает...


 
Сергей М. ©   (2006-07-12 08:13) [8]


> Rater1   (12.07.06 06:52) [7]


Зачем так усложнять задачу ?

Приложение-контроллер (твое приложение) устанавливает связь с Excel-сервером и отслеживает тем или иным образом (способы имеются) событие нажатия кнопки. По факту обнаружения нажатия контроллер запрашивает у сервера некоторые данные, обрабатывает их нужным образом и передает результаты обработки серверу.


 
Rater1   (2006-07-12 09:51) [9]

Какие способы?
Постоянно опрашивать ячейку?
А если имя книги поменяется... в программе вбивать?


 
Сергей М. ©   (2006-07-12 09:55) [10]


> Постоянно опрашивать ячейку?


Зачем ? Объект ExcelWorksheet имеет событие OnChange, оно и известит контроллер о факте изменения.


 
_RusLAN ©   (2006-07-12 10:12) [11]

Может, если изловчиться/извратиться то что-то типа этого поможет:
"Создание средствами Delphi DLL библиотек для использования в макросах Excel"
http://www.kornjakov.ru/stat.htm#s18


 
Rater1   (2006-07-13 10:07) [12]

[10] А как сервер может инициировать соединение с приложением?
(excel - сервер  и "моя программа" - клиент)


 
Сергей М. ©   (2006-07-13 10:25) [13]


> как сервер может инициировать соединение с приложением?


По OLE/COM - никак.
Инициатором соединения всегда является контроллер, а контроллером в твоем случае выступает твое приложение.

Впрочем ничто не мешает реализовать некую DLL, в которой осуществляется обращение к твоему приложению с использованием любых иных коммуникуционных механизмов/технологий, нежели OLE/COM. Ф-ции этой DLL легко вызвать в макросе.


 
Rater1   (2006-07-13 10:29) [14]

Ок. Dll - вариант.
описание dde где-нить есть под рукой?
А то никак не пойму почему если в событии OnPoke сервера вставить ShowMessage то работать перестает...

PS Пойду пока поищу в поисковике ...


 
Сергей М. ©   (2006-07-13 12:22) [15]

А если вместо Showmessage() "вставить" MessageBox() ?


 
evvcom ©   (2006-07-13 12:34) [16]

> описание dde где-нить есть под рукой?

А нафиг тебе dde? Чего ты к нему прицепился-то? Реализуй через DLL и без DDE.


 
Rater1   (2006-07-13 15:32) [17]

dde вроде таже dll только готовая ...
Вот я не пойму почему после запуска макроса всё встаёт, т.е. флаг waitstat не сбрасывается...
Сделаю новую ветку про дде...



Страницы: 1 вся ветка

Текущий архив: 2006.08.27;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.062 c
15-1153980738
IceBeerg
2006-07-27 10:12
2006.08.27
Где XP хранит список часто используемых программ?


2-1155065333
ronyn
2006-08-08 23:28
2006.08.27
Windows feat ShellApi


4-1146598889
DimaDukat
2006-05-02 23:41
2006.08.27
команда в WinAPI


4-1146872104
Nostradamus
2006-05-06 03:35
2006.08.27
Named Pipes


1-1152890545
oleggar
2006-07-14 19:22
2006.08.27
как упростить ввод ?