Страницы: 1
RSS
PoSh вместо VBA?
 
Добрый день. Подскажите новичку в excel. Возможно ли писать макросы на Powershell вместо VBA. Microsoft сейчас ведет активную политику в развитии PoSh, вполне возможно в последних версиях Excel уже присутствует такая возможность ?  
VBA не сложный язык, но кто видел powershell в действии, тот поймет что он в разы проще и гибче vba.
 
1) Да, возможность писать макросы на Powershell в Excel присутствует.  
Вот только эти макросы работать не будут :)  
 
2) Если VBA и будет заменён на что-то, то точно не на Powershell    
 
3) Powershell удобнее для управления Windows, VBA - для управления Excel  
Если вы знаете Powershell намного лучше, чем VBA, - это ещё не повод обвинять VBA в отсутствии гибкости.
 
Да, приношу извинения, что так высказался о VBA. Действительно я его гораздо хуже знаю чем powershell. Поясните, пожалуйста, почему писать можно, а работать - не будет ? :) Я таки не понял, поддерживается он там или нет. Если да, подскажите, где про это поподробнее прочитать?    
 
P.S. по поводу гибкости, я имел ввиду то, что в powershell можно спокойно писать куски кода и на других языках. В том числе и на vba и на c#. А удобство работы в powershell с той или иной средой (в т.ч. excel)всегда упирается только в наличие коммандлетов, которые к слову сказать не только ms разрабатывает.
 
Я правильно понимаю, что в Powershell нет графической оболочки?
 
Увы, макросы ни на чем, кроме VBA, не поддерживаются.  
 
В следующих версиях наверняка добавится VSTO, а там, глядишь, и до дело дойдёт.  
Но в ближайшие годы вряд ли стоит этого ждать.  
(Дело в том, что VBA  - это язык программирования, предназначенный для использования в приложениях. Точнее, приложения заточены под использование средств VB)  
 
А Powershell применяется для других целей - его идеология отличается от VBA.  
 
PS: Это вроде как сравнивать швабру и посудомоечную машину - вроде как оба предназначены для наведения чистоты, а сфера применения заметно отличается.  
 
 
PPS: Из VBA можно легко запустить любой файл, в том числе и файлы PS1  
Скажите, что вам нужно, - и мы подскажем, как это реализовать без Powershell    
(поверьте, для Excel и VBA более чем достаточно)
 
{quote}{login=Николай Иванов}{date=21.11.2011 12:40}{thema=}{post}я имел ввиду то, что в powershell можно спокойно писать куски кода и на других языках. {/post}{/quote}В Блокноте тоже можно набрать текст макроса :-)
 
Такс, кажется сам нашел то, что нужно. Но ещё не тестил. Может кому пригодится: http://excelposh.codeplex.com/  
 
 
"В Блокноте тоже можно набрать текст макроса :-)"  
Вот это я не понял к чему вы. Для powershell вы тоже можете набрать кусок скрипта в блокноте. Но выполнять например в скриптах vba код c# вы не можете (насколько я знаю, могу ошибаться), а вот в ps скриптах - запросто и без компиляции :-)  
 
EducatedFool: спасибо за ваши пояснения. Хотя мне трудно представить с чем не может справиться powershell. Ведь он работает с любыми данными как с объектами, так что ему стоит представить элементы данных эксель как объекты и спокойно с ними работать и что самое главное - так просто, что проще некуда%) Может тут уже вы плохо знаете powershell. В любом случае - спасибо.
 
> так что ему стоит представить элементы данных эксель как объекты и спокойно с ними работать и что самое главное - так просто, что проще некуда%)    
 
Ваш PowerShell в Excel сделает никак не больше того, что позволяет сам Excel.  
То же самое сделает и VBA.  
А если нет разницы, зачем платить больше? (с)  
 
 
> Может тут уже вы плохо знаете powershell  
Я его вообще не знаю, но оснований для использования его в Excel не вижу (разве что то, что вы привыкли к его синтаксису).  
 
Что в powershell вы пишете: $Application.ActiveCell = "value"  
Что в VBA вы напишите то же самое: Application.ActiveCell = "value"  
Или даже проще: ActiveCell = "value"  
 
Разница-то в чем?  
 
Впрочем, к чему спорить.  
Кому что удобнее - тот тем и пользуется.  
 
 
 
PS: Хотя, посмотрев примеры использования Powershell в Excel, немного разубедился в вышесказанном.  
 
Если работать со средствами Windows (WMI и т.п.) - Powershell куда удобнее:  
http://excelposh.codeplex.com/wikipage?title=Write-Excel%28Cmdlet%29&referringTitle=Home  
 
Прочем, и из VBA подобное вполне реализуемо:  http://excelvba.ru/category/network/IP  
 
 
PPS: Зато у VBA есть неоспоримый плюс - он встроен в Excel...
 
Экселем можно и из vbs управлять - тоже не сложнее, чем с помощью VBA, отличия минимальны.    
И тоже вполне может пригодиться в автоматизации процессов - я часто такой подход использую, правда чаще при обработке текста и выгрузки результата на лист Экселя, чем собственно для работы с файлами xls.
 
мне интересно а макрорекордер в PowerShell работает ???  
я хоть и неплохо(или плохо :) ) знаю объектную модель, но частенько прибегаю к помощи рекордера, для получения тех или иных свойств объектов, а как обстоят дела с этим у PSH (ЗЫР) :)
Спасибо
 
EducatedFool: да-да-да!!! Как раз забыл написать, что работать с wmi через posh - сплошное удовольствие. Макрорекордер скорее всего не работает, т.к. все-таки это внешнее snap-in, а не встроенное средство :)
Страницы: 1
Читают тему
Наверх