Добрый день. Подскажите новичку в 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 разрабатывает.
Увы, макросы ни на чем, кроме 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}В Блокноте тоже можно набрать текст макроса :-)
"В Блокноте тоже можно набрать текст макроса :-)" Вот это я не понял к чему вы. Для 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, немного разубедился в вышесказанном.
Экселем можно и из vbs управлять - тоже не сложнее, чем с помощью VBA, отличия минимальны. И тоже вполне может пригодиться в автоматизации процессов - я часто такой подход использую, правда чаще при обработке текста и выгрузки результата на лист Экселя, чем собственно для работы с файлами xls.
мне интересно а макрорекордер в PowerShell работает ??? я хоть и неплохо(или плохо :) ) знаю объектную модель, но частенько прибегаю к помощи рекордера, для получения тех или иных свойств объектов, а как обстоят дела с этим у PSH (ЗЫР) :)
EducatedFool: да-да-да!!! Как раз забыл написать, что работать с wmi через posh - сплошное удовольствие. Макрорекордер скорее всего не работает, т.к. все-таки это внешнее snap-in, а не встроенное средство :)