Недавно посетила мысль по поводу взаимодействия с пользователем (пользовательских форм). Не знаю как Вам, а мне всегда казалось, что VBA формы выглядят невзрачно, тускло, грустно. Чего стоит работа с ними (обработка событий). Замучаешься вешать обработчики, в то время как дело должно решаться обычным делегированием. Ближе к делу. Есть такой замечательный кантрол WebBrowser, который позволяет загружать в себя html, xml страницы. Можно тупо понаделать шаблонов и подгружать их с диска. Стили, внешний вид, все настраивается до мелочей. Появится возможность использовать анимацию! (плюшки) и не только. Динамически создавать любые элементы, гибкость. Кто что думает на этот счет?
скромный пример во вложении (для работы нужен инет)
>>мне всегда казалось, что VBA формы выглядят невзрачно, тускло, грустно<< А это так принципиально для работы пользователя? Не будет ли >>возможность использовать анимацию! (плюшки) и не только<< отвлекать работника от непосредственно выполнения требуемых действий? И в конце концов, может тогда перейти на VSTO? Возможностей больше, в том числе и для организации украшательств.
[anvg]> А это так принципиально для работы пользователя? нет. Но интерфейсы должны быть юзер-френдли. Зачем ремонт делают дома, мебель покупают? ) 4-е стены, они и есть 4-е стены.
[anvg]> отвлекать работника от непосредственно выполнения требуемых действий? если правильно использовать, то нет
[ikki]> моя твоя не понимает
Чебурашка стал символом олимпийских игр. А чего достиг ты? Тишина - самый громкий звук
nerv, тема, конечно, очень интересная. Я сразу подумал добавить в свои программы форму обратной связи, основанную на таком решении (в webbrowser подгружается определённая страница моего сайта, и уже сайт отправляет информацию мне на почту)
Но, немного подумав, вспомнил, что это чревато множеством проблем.
Первая (и основная) - то, что компонент WebBrowser использует «браузер» Internet Explorer, который у пользователя может быть любой версии - от 5,5 до 9 Чем это чревато - думаю, тебе объяснять не нужно. Любой, кто верстал страницы под IE (тем более, древних версий), знает, что куда проще реализовать всё на VBA, с его внешне ужасным интерфейсом.
Вторая проблема - настройки IE на компе. Мне попадалось много компов (когда работал в техподдержке провайдера, настраивал инет у сотен пользователей, и с чем только не сталкивался), где: - IE просто не запускается - вылетает с ошибкой, в то время как остальные браузеры корректно работают - в настройках IE прописана всякая ерунда, из-за чего сайты в нем не открываются - скрипты в IE отключены, включить не удается - куча надстроек загружается вместе с IE, в т.ч. вирусы (часто встречал) - доступ в интернет настроен криво (неверно настроена сетевая карта)
Как объяснять пользователю, почему у него макрос в Excel не работает? Настраивать ему IE? Сомнительное удовольствие... (мы с напарником, профессиональным сисадмином, порой за 1-2 часа не могли настроить IE для работы с сайтами - в то время, как остальные браузеры работали)
Так что использовать невзрачные кнопочки из набора Microsoft Forms - куда надежнее. В дизайне немного теряем, в надежности - выигрываем. Лично для меня стабильность работы моей программы куда важнее.
Саня, да отличные формы, строгое оформление, как раз для деловой обработки. А интерфейс зависит от квалификации разработчика. И слава Богу, что мелкие не прут туда всяких излишков. На форумах и так полно идиотов. Тому в комбо пункты раскрась во все цвета радуги, другому кнопку там же пошире сделай(эстэт, мля), третьему ячейку по диагонали в разные цвета залей. Иной раз открываешь пример, а там такой попугай, что слезы из глаз брызжут, разобрать ничего нельзя. Заставь дурака Богу молиться... Экс - табличный процессор с чересчур избыточными возможностями. Всегда хочется ответить таким культуртрегерам: хотите попугаев - Бога ради. Си, Паскаль, VB и т.д.. Создавайте свои контролы, роюшки, бляшки, подключайте и выслушивайте проклятия тех, у кого оно не заработает или, будет вызывать критические сбои:-)
EducatedFool, кантрол WebBrowser !== Internet Explorer (не равно). Это я начал подозревать, как только загрузил в первый пару тройку страниц. Дабы сейчас окончательно развеять свои сомнения, удалил IE и запустил пример. Все работает ) Верстать под IE. Я говорил о страницах, специально заточенных под этот кантрол и изначально не планировал открывать их в других браузерах, зачем? Т.о. нет надобности в стилях для других браузеров. А если и появиться, достаточно будет подключить один дополнительный файл Один из способов организации работы: все формы + функционал храняться у тебя на сайте и загружаются прямо оттуда. Вряд ли, они будут весть много. Всегда актуальные версии у всех пользователей. Возможность контроля в разы больше.
> Так что использовать невзрачные кнопочки из набора Microsoft Forms - куда надежнее. в целом ты прав, если речь идет о стандартных элементах управления. На днях пытался подключить ListView в Office x64. Пытался долго ) Закончилось все тем, что наткнулся на "в Office x64 этот + другие почти стандартные элементы управления не поддерживаются".
KukLP, > Саня, да отличные формы, строгое оформление, как раз для деловой обработки работа должна быть "вкусной" по мере возможности. Все мы любим удобные и функциональные программы. Что мешает добавить к ним дизайна? Почему люди предпочитают иномарки отечественному (рус) автопрому? И то и другое машина. Только иномарка помимо остальных ее достоинств, берет и внешним видом. Насчет попугаев. Неумение пользоваться инструментами еще не говорит о несостоятельности этих инструментов.
Почему я завел об этом речь: дружелюбные интерфейсы, это не только юзабилити. Встречают по одежке.
Чебурашка стал символом олимпийских игр. А чего достиг ты? Тишина - самый громкий звук
>> конвертер в помощь (если ты об этом) нет, не об этом. файлы в формате 2007/10, выкладываемые новичками, не говорят ни о чем. выкладываемые завсегдатаями - обычно говорят о том, что файл в старших версиях, даже открытый с помощью конвертера, работать не будет. сам проверить немедленно не мог - поэтому и спросил.
идея-то очень хорошая. а контрол-аналог TreeView там можно реализовать? ибо он тоже "труднопереносимый" :(
фрилансер Excel, VBA - контакты в профиле "Совершенствоваться не обязательно. Выживание — дело добровольное." Э.Деминг
Моя Имха: увиденное не вдохновило: все эти затухания/исчезания/перемещения/сплиты, не более чем перламутровые пуговицы. Поддерживаю Сержа - функциональности никакой. Может там ЕЩЁ что-то полезное/нужное есть?
У меня работает,как на хрюше так и на семерке. В целом мне нравиться, хотя конечно в большой проект я бы не стал пристраивать :). (нет опыта как оно себя поведет). Грузить страницу с интернета (имхо) не лучший вариант, в корпоративных сетях зачастую его рубят до невозможности :). ---------------- если бы xml считать с внутреннего устройства самого файла(xlsm), тогда да - это можно развивать. Держать отдельно папку у юзера с отдельными файлами--- тоже не выход, остается писать xml html программно и загружать. Но и это, как то накладно по коду получается. ------ Пока мнение двоякое :)
Ну ладно, нарисовали. А как с ней работать? Как считать, что выбрал юзер? Я не имел дела с этими контролами - разве что что-то послать ТУДА - а вот как легко взять обратно? Снова читать и парсить весь текст ответа?
этот пост в контексте данной темы практически не несет никакой смысловой нагрузки. Попробовал анимировать пользовательскую форму, результат во вложении.
nerv Возможно, вы и правы с точки зрения коммерческого распространения программ. В этом деле Вау! эффект имеет не последнее значение, да и поддержка несколько проще, возможно. Сложно оценить, по своему узкому личному опыту своей работы в нашей конторе - это не лучшее решение тянуть html. Для себя же я решил переползать на Net Framework, используя ExcelDNA. Уже написал первое расширение. Учитывая множество "вкусностей" в .Net, скорее всего буду отказываться от VBA. Да и с дизайном в нём всё гораздо проще - стандартно поддерживается оформление системы, например, а не как в VBA - стиль Win95.
[ikki]> а контрол-аналог TreeView там можно реализовать? думаю, да
[Юрий М]> увиденное не вдохновило. Может там ЕЩЁ что-то полезное/нужное есть? конечно. Это только "плюшки" )
[R Dmitry]> У меня работает,как на хрюше так и на семерке. ok. Спасибо за отзыв : )
[Hugo]> А как с ней работать? Как считать, что выбрал юзер? [Hugo]> Я не имел дела с этими контролами - разве что что-то послать ТУДА - а вот как легко взять обратно? Снова читать и парсить весь текст ответа? html/xml страница - это такой же объект, как, например, excel. Дергать за ручки (свойства/методы). Все как обычно.
Чебурашка стал символом олимпийских игр. А чего достиг ты? Тишина - самый громкий звук
anvg, что такое ExcelDNA? VB.NET? Видел краем глаза. Могу ошибаться, но в плане разработки он удобней (чем VBA). Если это возможно, покажите пример [расширение]. Желательно с плюшками : )
Чебурашка стал символом олимпийских игр. А чего достиг ты? Тишина - самый громкий звук
{quote}{login=nerv}{date=23.09.2012 12:24}{thema=}{post}[ikki][Юрий М]> ... Может там ЕЩЁ что-то полезное/нужное есть? конечно. Это только "плюшки" ){/post}{/quote}Плюшки - оно, конечно, вкусно :-) А можно глянуть какую-нибудь полезняшку?
nerv Пример выложил здесь http://rghost.ru/40542371 Подробности описал в readme. С плюшками "визуальными" - только поддержка стилей Windows. С остальным - пример LINQ, работа и источниками данных, типизированными списками. Увы, хоть и не первый год использую .Net но до многих вещей в нём руки не дошли - в процессе самообучения. Написано на VB.NET, хотя если использовать библиотеку, а не писать в скриптовом стиле, можно испозовать любой язык, поддерживающий .Net. Как добиться визуальных изменений компонентов, создать свои - информация есть и на msdn и на многочисленных форумах по C#. Попробуйте, вдуг понравится?
У меня запускается только из проетка(SimpleExcelDNAddIn\SimpleExcelDNAddIn\bin\Debug\SimpleExcelDNAddIn.xll), в VS к сожалению проект не компилируется, вываливаются ошибки, но за пример спасибо, лично я буду ковыряться :))
Открылся, исправил путь к библиотеке. _____________ Я бы использовал все же позднее связывание (Для надежности :))) Dim pConn As New ADODB.Connection(), pRSet As New ADODB.Recordset()