Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.10.2012, 23:35   #1
Louken
Новичок
Джуниор
 
Регистрация: 21.10.2010
Сообщений: 2
Вопрос Надстройка DLL (XLL) с формой для Excel (без VBA)

Приветствую всех.

Стоит задача написания надстройки для MS Excel. Она должна производить форматирование документа, его редактирование и уметь отображать собственные диалоговые окна. Все это в real-time, по нажатию кнопки на панели инструментов Excel.

Решение этой задачи усложняется следующими ограничениями:
1. На компьютерах пользователей надстройки нет прав администратора;
2. Нет возможности поставить дополнительное ПО, вроде MS VSTO, либо долго и нудно просить админов что-либо сделать;
3. Нет доступа к диску C, он попросту невиден для пользователя (есть диск D и сетевые диски);
+ ко всему, надстройка, должна быть, по возможности, универсальной, нужна поддержка версий 2003 - 2010, а в идеале и Open Office.

Как мне видится идеальное решение (задача максимум):
Исполняемый код надстройки написать на Java используя IDE Eclipse (Java+Eclipse - наш корпоративный стандарт). Создать jar файл и подключить его, некоим образом, к Excel и Open Office, как надстройку. Т.е. единый базовый код обработки csv + софто-зависимый код, использующий соответствующий API для доступа и редактирования/форматирования ячеек в таблице (форматирование здесь исключительно для удобства чтения документа). Далее пользователь открывает Excel (Open Office), автоматически подгружается надстройка, которая создает на панели задач кнопку. Пользователь загружает csv, жмет кнопку, видит диалоговое окно и что-то с ним делает.

Попытался найти, что-то более менее юзабельное и не очень сложное - попытка провалилась. Нашел только, как добавлять пользовательские функции, но ими мы вообще не пользуемся. Потому упрощаю себе задачу - Open Office и Java отметаются, остаются Excel + C#. Но, если есть идеи, с удовольствием их выслушаю.

Задача минимум:
Создать универсальную надстройку для Excel (одну для всех версий - 2003-2010).
На данный момент уже реализована XLA надстройка, с макросами, автоматическим добавлением кнопок в меню (v2003) и на ленту (v2007) и диалоговыми окнами, но далее совершенствовать ее используя VBA, у меня нету мочи, мне не достаточно языковых возможностей и встроенных классов.

Конечно поискал решения и попробовал создать другие виды надстроек:
XLL - не смог разобраться, как же нужно реализовать dll, чтобы Excel принял эту библиотечку, как правильную надстройку.
Нашел здесь некоторую информацию:
http://msdn.microsoft.com/en-us/libr.../bb687911.aspx
Но без примера кода простейшей DLL сложно что-то понять.
VSTO - пробовал создавать такие надстройки в Visual Studio 2010, но этот вариант остается на крайний случай, т.к. требуется установка дополнительного ПО, что сложно, с точки зрения развертывания.

Я ни за что не поверю, что нет стандартных приемов, при которых пишется простейший код, экспортируются нужные функции в DLL, все это компилируется и подключается к Excel c помощью Меню > Надстройки > Подключить ...
Помогите, пожалуйста, найти правильную дорожку, ведь наверняка не мало народу подобными вещами озадачиваются.

С уважением,
Андрей
Louken вне форума Ответить с цитированием
Старый 08.10.2012, 02:10   #2
nerv
Форумчанин
 
Аватар для nerv
 
Регистрация: 26.04.2010
Сообщений: 450
По умолчанию

а хабр почитать?

Руководство по созданию Excel add-in для начинающих
VSTO и CAB: Интеграция .NET приложения в Microsoft Word

Цитата:
Сообщение от Louken Посмотреть сообщение
На данный момент уже реализована XLA надстройка, с макросами, автоматическим добавлением кнопок в меню (v2003) и на ленту (v2007) и диалоговыми окнами, но далее совершенствовать ее используя VBA, у меня нету мочи, мне не достаточно языковых возможностей и встроенных классов.
как я тебя понимаю Вместе с тем, встроенными классами ограничиваться не обязательно.

Еще мне не понятно следующее: ты собрался писать dll, следовательно кидать ее придется на системный диск. При этом ты пишешь:
Цитата:
Сообщение от Louken Посмотреть сообщение
3. Нет доступа к диску C, он попросту невиден для пользователя (есть диск D и сетевые диски);
Также не ясно, поддержка каких ОС требуется. Может ты пишешь для Mac...
Тишина – самый громкий звук

Последний раз редактировалось nerv; 08.10.2012 в 02:16.
nerv вне форума Ответить с цитированием
Старый 08.10.2012, 03:42   #3
AndVGri
Форумчанин
 
Регистрация: 10.02.2012
Сообщений: 109
По умолчанию

Louken а не приведёте ли пример - как в xla создать на ленте Excel 2007-2010 пользовательскую вкладку-группу-кнопку и обработчик нажатия на кнопку (для xlam всё понятно - CustomUI.xlm)?
С дисками - Windows NT использует систему монтирования аналогичную nix, буквы дисков наследие старых времён. Мне попадалась машина, где диском С был CD-RW - нормально работала.
Для разработки расширений для Excel под .Net посмотрите в сторону ExcelDNA. Наверняка у вас на компьютерах установлены версии .Net Framework 2 и выше. Можно посмотреть в папке Windows\Microsoft.Net, что уже установлено.
AndVGri вне форума Ответить с цитированием
Старый 08.10.2012, 12:10   #4
Louken
Новичок
Джуниор
 
Регистрация: 21.10.2010
Сообщений: 2
По умолчанию

Прошу прощения, если мой пост, вызвал недопонимание.

nerv
С созданием надстроек в Visual Studio все ясно, там в принципе, легко разобраться и самому. Дело в том, что для поддержки VSTO нужно ставить:
http://msdn.microsoft.com/ru-ru/libr...(v=vs.90).aspx
а это в моем случае трудная задача. Потому ищу другие пути.

Цитата:
как я тебя понимаю Вместе с тем, встроенными классами ограничиваться не обязательно.
Я конечно в VBA для Office не силен, но по моему в нем даже списков нормальных нет. Ну что за список - Collection, где нет ни поиска, ни очистки списка. Можно, конечно, написать самому чего не достает, но какой тогда смысл работы тысяч программистов, которые пишут свои современные IDE (вроде VS, RAD Studio или Eclipse), если мы будем пользоваться IDE из прошлого века.

Цитата:
Еще мне не понятно следующее: ты собрался писать dll, следовательно кидать ее придется на системный диск.
Совсем не обязательно dll кидать в папку System32 или Microsoft\AddIns. Можно ведь разместить свою надстройку (XLA, XLL) на сетевом диске, подключить ее и Excel будет использовать ее прямо от туда, точно также и с DLL или VSTO.

Цитата:
Также не ясно, поддержка каких ОС требуется. Может ты пишешь для Mac...
Пишу для Windows, о кроссплатформенности даже не мечтаю, хотя есть на примете пару Java проектов, возможно, что-то и получится.

AndVGri
Цитата:
Louken а не приведёте ли пример - как в xla создать на ленте Excel 2007-2010 пользовательскую вкладку-группу-кнопку и обработчик нажатия на кнопку (для xlam всё понятно - CustomUI.xlm)?
В XLA конечно никак) Я делаю иначе. Создаю XLAM надстройку, в нее вставляю модификатор для ленты, в нее же вставляю модуль для программного создания кнопок и меню в Excel 2003 (если истинно условие, что версия Office не выше 11.0). Потом пересохраняю XLAM в XLA. Итого две надстройки - для "старых" и "новых" версий Office.

Цитата:
Для разработки расширений для Excel под .Net посмотрите в сторону ExcelDNA.
Спасибо за ссылку, но разве с помощью ExcelDNA я могу создавать что-то большее чем UDF (User-Defined Function)? Мне нужны диалоговые окна.
Louken вне форума Ответить с цитированием
Старый 08.10.2012, 15:19   #5
AndVGri
Форумчанин
 
Регистрация: 10.02.2012
Сообщений: 109
По умолчанию

Louken
Всё течёт, всё меняется краткое описание по ExcelDNA. Можете посмотреть ещё и этот проект Net Offce - разработка расширений для всех программ офиса, не зависимо от версии, включая 32 или 64-битная платформы.

Последний раз редактировалось AndVGri; 08.10.2012 в 15:20. Причина: ошибка в названии
AndVGri вне форума Ответить с цитированием
Старый 08.10.2012, 15:37   #6
DiemonStar
Старожил
 
Регистрация: 08.02.2012
Сообщений: 2,173
По умолчанию

Цитата:
Я конечно в VBA для Office не силен, но по моему в нем даже списков нормальных нет. Ну что за список - Collection, где нет ни поиска, ни очистки списка.
Scripting.Dictionary - достаточно функциональный вариант...

и вообще, если кажется, что чего-то нет, задумайтесь - может Вы об этом просто не знаете...
Правильно поставленная задача - три четверти решения.
DiemonStar вне форума Ответить с цитированием
Старый 09.10.2012, 20:04   #7
nerv
Форумчанин
 
Аватар для nerv
 
Регистрация: 26.04.2010
Сообщений: 450
По умолчанию

Цитата:
Прошу прощения, если мой пост, вызвал недопонимание.
не извиняйся

про ExcelDNA можешь попытаться спросить здесь
Тишина – самый громкий звук
nerv вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
VBA excel не удается закрыть и сохранить книгу без возникновения диалогового окна Tvilla Помощь студентам 2 28.06.2012 11:01
Вопрос по Надстройка для MS Excel «Простой прогноз» (Forecast 1. xla). sosed Microsoft Office Excel 1 03.02.2011 23:27
excel+vba странности взаимодействия при сохранении книги без макросов alvazor Microsoft Office Excel 7 06.07.2009 17:22
Excel без VBA kwvdr Microsoft Office Excel 1 26.12.2008 20:11
Надстройка PLEX для Microsoft Excel PLEX for free Microsoft Office Excel 0 28.05.2008 17:19