Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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
15-1154384228
Razor
2006-08-01 02:17
2006.08.27
Изучение java


2-1154865648
Sele
2006-08-06 16:00
2006.08.27
открытие файла на 1 копии программы


6-1144075064
Yegorchic
2006-04-03 18:37
2006.08.27
Кодировка и IdPOP3


2-1154865170
Sele
2006-08-06 15:52
2006.08.27
панель


15-1154618982
Pazitron_Brain
2006-08-03 19:29
2006.08.27
ICQLOG.RU - рулез!





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский