Страницы: 1 2 3 4 След.
RSS
Есть ли будущее у VBA
 
Коллеги, здравствуйте.
Наверняка все, кто более-менее профессионально занимается VBA, сетуют, что MS в принципе не развивает этот язык, что он фактически неизменен с 2000 года, что он никак не связан ни с какой современной технологией от MS. А поэтому возникает вопрос, а что собственно ждёт VBA, да и MS Office дальше? Кто имеет мнение на этот счёт?
с уважением,
Батьянов Денис
 
Цитата
dsb75 написал:
неизменен с 2000 года
А что было в 2000-м году?
А вообще где-то читал, что VBA ещё будет жить достаточное время. :)
Да, не развит. Например, нет перегруженных конструкторов. Очень нужная вещь для классов. Модуль класса - один. Если кода много, то приходится листать эту сосиску. Нельзя создать свои папки в проекте.
Например, начиная с Visual Studio 2005 можно разбить класс на два разных файла, используя модификатор "partial".
Ну а так да - язык застрял где-то в 90-х годах.
There is no knowledge that is not power
 
Доброе время суток.
Цитата
Johny написал:
Да, не развит. Например, нет перегруженных конструкторов. Очень нужная вещь для классов. Модуль класса - один. Если кода много, то приходится листать эту сосиску. Нельзя создать свои папки в проекте.
А как же VSTO или как оно там сейчас? А для "малых форм" так VBA хорош.
 
Цитата
Johny написал: А что было в 2000-м году?
Возможно путаю, то версия 6.3 вроде бы с тех времён. На ней всё и застыло. Надеюсь, версию VBA 7.0 никто не считает чем-то новым...
с уважением,
Батьянов Денис
 
А что кстати можете рассказать про VSTO, как я понимаю это для самой VS надстройка?
Т.е. можно использовать VS + VSTO вместо VBA нынешнего?
Использую VBA для решения рабочих вопросов. Чуть больше чем любитель, так что прошу прощение за глупые вопросы.
 
Цитата
Olegersohn написал: VS + VSTO вместо VBA нынешнего?
не совсем, я бы сказала - попробую провести параллель
(я не профи, скорее просто люблю анализировать лингвистику - так как "в связях слов - смыслы их значений")...
Visual Studio Tools for Office - как-то так:
Цитата
VSTO предоставляет полный набор функций Visual Studio...
VSTO add-in (типы проектов и управления) позволяют VSTO applications и Office add-ins разработаться с использованием Visual Studio IDE...
a) Visual Basic for Application - это IDE для excel (и др оффисных продуктов), дающий возможность для разработки кода на VB в данной среде (офисной)...
Visual Studio же - это IDE для разработки и на VB, и на C#, в принципе... а
б) Visual Studio Tools for Office - см. линк wiki для более полного описания - но по сути (vs не нужен, чтобы использовать vsto)
Цитата
VSTO позволяет использовать существующие вложения в VBA, расширяя существующие решения управляемым кодом.
по сути, как и VSTA - Visual Studio Tools for Applications
Цитата
Visual Studio Tools for Applications основана на .NET Framework 2.0 и построена на той же архитектуре, что и Visual Studio Tools для Office (VSTO).
т.е. VSTO расширяет возможности программирования в офисных продуктах до уровня Visual Studio, как и VSTA - расширяет возможности программирования в любых созданных вами приложениях (только чтобы вставить vsta в своё приложение - надо купить его у Microsoft за ~50у.е.)
в) Visual Studio Tools for Applications
Цитата
Visual Studio Tools for Applications состоит из среды выполнения и среды разработки, которые могут быть встроены в приложения ...
Visual Studio Tools for Applications также имеет 64-битную поддержку, записи макросов и других обычных Visual Studio 2005 IDE особенности, но не включает активные сценарии поддержки.
лежит, наверно, здесь (и vsta, и vsto) - C:\Program Files\Common Files\microsoft shared
P.S. хотя vsta я запускала из - C:\Program Files\Microsoft Visual Studio 8\Common7\IDE\vsta.exe - при установке так сразу и не скажешь, что эта полезная вещь ставится вместе с офисом... vsto тоже где-то должна быть на жёстком диске...

:idea:  P.P.S.
в общем, в двух словах хотела сказать, что VSTO даёт использовать возможности VS в офисном приложении - т.е. самом офисе) - насколько понимаю, ещё не юзала
Изменено: JeyCi - 31.08.2015 11:16:51
чтобы не гадать на кофейной гуще, кто вам отвечает и после этого не совершать кучу ошибок - обратитесь к собеседнику на ВЫ - ответ на ваш вопрос получите - а остальное вас не касается (п.п.п. на форумах)
 
Доброе время суток
Добавлю свои пять копеек.
VSTO - это собственно поддержка надстроек Office (необходима на компьютерах для их выполнения The Visual Studio 2010 Tools for Office Runtime must be installed on each computer that runs solutions that are created by using the Microsoft Office developer tools in Visual Studio.), созданных при помощи Visual Studio (не все редакции VS позволяют создавать надстройки для Office, увы).
Помимо очевидных преимуществ, предоставляемых C#, VB.Net, позволяет динамически создавать и удалять элементы ленты. В отличии от этого, xml созданная лента и связанные с её элементами callback позволяют только скрывать/показывать элементы, плюс, обновлять содержимое спископодобных элементов управления. Хотя, может я и плохо разобрался с этим вопросом.
Имеется и недостаток - прямая работа с ячейками листа Excel заметно медленнее.
VSTA - подобная же конструкция для других разработчиков для автоматизации, подобно VBA. Насколько сталкивался, в прямую поддерживается CorelDraw. При выборе в меню "Макросы" "Редактор VSTA" запускается урезанная версия Visual Stuio для написания библиотеки расширения. Но, видимо, с отсутствием спроса со стороны других компаний-разработчиков, поддерживается VSTA Microsoft кривовато. Для 16 версии CorelDraw запускается огрызок VS2008, который позволяет создать и откомпилировать расширение, но не позволяет отлаживать, так как поддерживаемая версия Net Framework для него 3.5, а корел 16 в Net Framework 4. С 15 корелом таких проблем не было.
Изменено: Андрей VG - 31.08.2015 16:28:56
 
С одной стороны активное развитие это не всегда хорошая обратная совместимость (не программист, могу ошибаться).
С другой больший функционал (?).
А чего бы Вы добавили в VBA? Чего там не хватает, на Ваш взгляд?
«Бритва Оккама» или «Принцип Калашникова»?
 
Цитата
Андрей VG написал: не все редакции VS позволяют создавать надстройки для Office
Да, VS Community 2015 ничего нового мне не показал после установки Visual Studio 2010 Tools for Office Runtime...
с уважением,
Батьянов Денис
 
Цитата
Андрей VG написал: А как же VSTO или как оно там сейчас?
И причём тут VSTO, когда речь идёт о VBA?
There is no knowledge that is not power
 
Цитата
dsb75 написал: Возможно путаю, то версия 6.3
Ну вообще-то VBA появился в "Microsoft Office for Windows 95". :)
Цитата
dsb75 написал: Да, VS Community 2015 ничего нового мне не показал после установки Visual Studio 2010 Tools for Office Runtime...
Может, потому что это есть только в VS Enterprise?

Цитата
Андрей VG написал: Имеется и недостаток - прямая работа с ячейками листа Excel заметно медленнее.
Причём очень заметно. В .NET используется COM Interop, который создаёт так называемый RCW (Runtime Callable Wrapper) - обёртка, которая имитирует COM объекты. Всё это явно не в плюс работе с Экселем. :)
Изменено: Johny - 31.08.2015 20:18:56
There is no knowledge that is not power
 
Цитата
Johny написал: И причём тут VSTO, когда речь идёт о VBA?
О VBA и его будущем. Вот когда на VSTO перейдёт достаточно большое количество разработчиков... Или Microsoft посчитает, что только это и есть надёжное и единственно верное средство, то тогда будущее у VBA и подойдёт к концу. А вот что VBA будут куда-то развивать - что-то не верится. Для чего Microsoft тянуть ещё один язык прикладного программирования?
Цитата
Да, VS Community 2015 ничего нового мне не показал после установки Visual Studio 2010 Tools for Office Runtime
Johny уже написал почему не показал, а Visual Studio 2010 Tools for Office Runtime лишь набор библиотек, требуемый для выполнения надстроек, разработанных в Visual Studio Net.
 
Цитата
Андрей VG написал:  Вот когда на VSTO перейдёт достаточно большое количество разработчиков...
Я как-то хотел переписать VBA-проект на работе под VSTO - и получил проблемы с инициализацией библиотек. Какие-то постоянные ошибки. А если, например, на стороне юзера что-то надо подправить - как это сделать? Ставить юзеру VS? :) Много неудобств. Ни разу на нём ничего не писал, так как это - load of shit.
There is no knowledge that is not power
 
Довольно часто слышал, что "Если хочешь писать только для офиса (имелось ввиду работа), то пиши VBA, все просто, довольно быстро, а главное легко править".
В принципе сейчас этим и занимаюсь когда нужно оптимизировать рутинную работу в MS Office. Оговорюсь еще раз, что я не программист, на него не учился и VBA это скорее мое хобби.
Всегда интересовался немного программированием, на сегодняшний день могу "прочитать" код на производных С, но есть желание развиваться в направлении его "письма".
Собственно вопрос - сейчас думаю о том, что бы все же глубже лезть в возможности VBA (работаю над аналогом PLEX) только с функционалом необходимым в работе или все же садить учить язык более "серьезный". что думаете? и если язык, то какой? Или все же VBA умирать не собирается и раз это лишь хобби, то получать удовольствие от него?
p.s. что нравиться, то и делай - хорошее предложение, но я жду другого.
Использую VBA для решения рабочих вопросов. Чуть больше чем любитель, так что прошу прощение за глупые вопросы.
 
Цитата
Olegersohn написал:
и если язык, то какой? Или все же VBA умирать не собирается и раз это лишь хобби, то получать удовольствие от него?
Одно другому не помеха. Начните с C# (или VB.NET - синтакс знакомый). :)

Вот пример программы на C#:
Код
new int[] { 1, 2, 3, 9, 10, 11 }.Where(n => n % 2 == 0).ToList().ForEach(n => Console.WriteLine(n));
Эта строка:
1) создаёт массив Integer
2) отбирает чётные цифры
3) выводит на консоль полученные цифры

Можно сделать такую же программу на VBA в одну строку? Нет.
Или такая программа в одну строчку:
Код
new DirectoryInfo(@"C:\Windows\").EnumerateFiles().Where(f => Regex.IsMatch(f.Name, @".+\.exe") && f.Length > 100).ToList().ForEach(f =>
            Console.WriteLine($"Full path: {f.FullName}\r\n\tSize: {f.Length.ToString("N0")} bytes\r\n\tFile name w/out ext: {Path.GetFileNameWithoutExtension(f.Name)}\r\n\tCreation time: {f.CreationTime.ToString("dd.MM.yyyy")}"));
Берём папку Windows, находим все экзэшники (с помощью регулярных выражений) более размером 100 байт и для каждого выводим (с табуляциями): полный путь, размер файла, имя файла без расширения, дата создания файла - день.месяц.год.
Можно такое сделать в VBA? Нет.
Изменено: Johny - 01.09.2015 00:12:01
There is no knowledge that is not power
 
Цитата
Olegersohn написал:
или все же садить учить язык более "серьезный". что думаете? и если язык, то какой?
Доброе утро. Я вот тоже не программист, но у меня очень много друзей программистов. Сам недавно задавался таким вопросом, на что получил контр-вопросы от друзей. Вот Вы для себя решили, чем хотите заниматься, программировать ради удовольствия или нет? Писать сайты, сервера, мобильные приложения, базы данных, надстройки в Excel?
Изменено: Smiley - 01.09.2015 09:28:04
Учусь программировать :)
 
Соглашусь со Smiley. Языка программирования вообще для всего не существует. Под каждые конкретные задачи, так сложилось, используются разные языки. Если вы определитесь с целями, то можно порекомендовать что-то конкретное. А если в качестве тренировки мозга, то, в принципе, тот же VBA подойдёт - главное же алгоритмы и построение алгоритмического решения поставленной задачи, а каким языком это будет реализовано, зависит от самой задачи. В качестве грубой аналогии в Англии - на английском, в Германии - на немецком;)
 
VBA в меру простенький и более понятный язык.
Я пол года назад взялся за изучение VBA  и сейчас более-менее решаю/автоматизирую задачи. Вместе со мной коллега в тоже время взялся за Python.
Итог - месяц назад я понял что он даже ещё не имеет четкого предтставления оператора Else  :D
Так же читал форум сисадминов, ребята хотели переквалифицироваться в прог-сты. Разумеется брались за самое высокооплачиваемое по рынку, а именно за Java.
Итог - несколько человек, повозившись с ним 1,5-2 года заходили в полный тупик.  
 
Цитата
Radik_82 написал:
...повозившись с ним 1,5-2 года заходили в полный тупик...
Конечно. 1,5-2 года, если начинать с нуля - чуть-чуть подойти к понятию объектного программирования (не команды выучить, а мозги адаптировать), а в Java без объектов, по-моему, делать нечего.
И ещё раз повторю старую истину:
"Без задачи языки не учатся!"
Как можно что-то изучить, если не знаешь: "а зачем это всё нужно" ?!
 
Цитата
Johny написал:
Берём папку Windows, находим все экзэшники...Можно такое сделать в VBA? Нет.
В общем-то можно, просто строк больше будет...
Стало немножко обидно за старый, добрый VBA :)
«Бритва Оккама» или «Принцип Калашникова»?
 
Цитата
bedvit написал: В общем-то можно, просто строк больше будет...
Так а я и имел ввиду - в одну строчку. :)
There is no knowledge that is not power
 
В одну строчку согласен, сложновато :)
Если извращаться, только в две :)
Код
F = Dir("C:\Windows\" & "*.exe"): Do While F <> "": If FileLen("C:\Windows\" & F) > 100 Then Debug.Print "C:\Windows\" & F & vbTab & FileLen("C:\Windows\" & F) & vbTab & F & vbTab & Format(FileDateTime("C:\Windows\" & F), "dd/mm/yyyy"): F = Dir
Loop
«Бритва Оккама» или «Принцип Калашникова»?
 
Цитата
bedvit написал: А чего бы Вы добавили в VBA? Чего там не хватает, на Ваш взгляд?
Проблема в том, что на рынке труда знание VBA практически никому не нужно. Это некий остров, который уже потерял всякую связь с реальностью IT индустрии.
Если раньше давно VB6 и VBA были одинаковы по своим возможностям, то сейчас это вообще невозможно сравнить.
Ограничивая свои знания только VBA, вы невольно деградируете как специалист (пусть даже и не по факту, а по субъективному мнению рынка). Увы...
с уважением,
Батьянов Денис
 
Цитата
Johny написал: Можно сделать такую же программу на VBA в одну строку? Нет.
Что это за критерий - "в одну строку". Зачем? Это нечитабельно. Экономите память на диске? :)
с уважением,
Батьянов Денис
 
Цитата
Johny написал: Ну вообще-то VBA появился в "Microsoft Office for Windows 95"
Я говорю про момент, с которого VBA перестал развиваться. По-моему это была версия 6.3 и появилась она примерно в 2000-м или раньше, но не ранее 1998.
с уважением,
Батьянов Денис
 
На VBA 248 знаков,  на C#: 367. Хотя, надо признаться  - файлы с расширением выводятся, можно отсечь 4 знака последних, все равно по знакам кода выигрыш :)
Изменено: bedvit - 01.09.2015 19:10:11
«Бритва Оккама» или «Принцип Калашникова»?
 
dsb75, с моей точки зрения (не программиста) не совсем корректно сравнивать VBA (по большему счету дополнение к программам MS Offiсe) и напрмер С++ на котором пишут уже сами программы (операц. системы). Это как сравнивать отдельный блок программы с самой программой. Разные масштабы, разные задачи. Поправьте, если это не так.
«Бритва Оккама» или «Принцип Калашникова»?
 
Цитата
dsb75 написал:
Проблема в том, что на рынке труда знание VBA практически никому не нужно. Это некий остров, который уже потерял всякую связь с реальностью IT индустрии.
Если имеется ввиду рынок труда IT-здесь с вами скорее согласен, а вернее слабо осведомлен. Если рынок труда финансово-экономической направленности, знание VBA, сводных, сложных формул - всё же плюс. Насколько большой, зависит от выполняемых обязанностей, но плюс.
Изменено: bedvit - 01.09.2015 19:34:38
«Бритва Оккама» или «Принцип Калашникова»?
 
Цитата
dsb75 написал:
Проблема в том, что на рынке труда знание VBA практически никому не нужно. Это некий остров, который уже потерял всякую связь с реальностью IT индустрии.
Проблема не в языке и его ненужности, а в людях - пользователи компьютера просто не знают "ЧТО можно сделать на VBA" и "что можно сделать НА VBA".  :(
А ещё есть проблема, что пользователи компьютера вообще не знают, что ИМ САМИМ нужно!

Хотя, проблему отсталости языка это не оправдывает.  :cry:
...Очень не хватает нормального наследования...
 
Цитата
bedvit написал:
Если рынок труда финансово-экономической направленности...
Полностью согласен. Именно в такой ситуации нахожусь я. Экселем увлекался на уровне чуть больше чем все (знал формулу ВПР и иже с ней). После того как в один прекрасный день была поставлена задача создать шаблон позволяющий проводить аналитику больших объемов данных и самое интересное, что бы "оно само считало", т.е. желательно ничего не делать конечному пользователю, максимально ничего, пришлось лезть в VBA и пробовать, набивать и делать.
На сегодняшний день уже сделано несколько больших шаблонов с макросами позволяющими специалистам работать в привычном экселе, и они довольны - привычные формулы, привычный вид, легкость работы, а главное легкость "допила".
Вот и думается, останется через пяток лет VBA или будет что-то новое но настолько же простое и функциональное. или ждать чего-то нового и массивного?
Использую VBA для решения рабочих вопросов. Чуть больше чем любитель, так что прошу прощение за глупые вопросы.
Страницы: 1 2 3 4 След.
Наверх