Форум: "Основная";
Текущий архив: 2006.08.27;
Скачать: [xml.tar.bz2];
Внизпередать данные из 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;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.045 c