Перенос инструкций Visual Basic в Perl Win32::OLE.

Я прочитал все стандартные тексты Win32::OLE, такие как классика Яна Дюбуа и, конечно же, официальная документация по пакету, Microsoft краткая статья и многие другие.

Чего мне не хватает, так это правил преобразования захваченного оператора макроса VBA Excel в оператор Perl Win32::OLE.

Скажем, у меня есть захваченный макрос VBA:

Sub cntrl_arrow_down()
     Range(Selection, Selection.End(xlDown)).Select
End Sub

Предполагая, что я уже получил объект приложения (Excel), объект «книга», объект «лист» и активировал лист. Кроме того, я выбрал ячейку и пытаюсь найти размер столбца, в котором находится эта ячейка. Я хотел бы получить объект «Диапазон», который я могу затем прочитать в массиве 2D Perl.

Пожалуйста, мне нужны правила, а не только ответ на эту конкретную строку.

Спасибо!


person MeirG    schedule 09.03.2014    source источник
comment
Если вы используете Perl, почему вы должны использовать Win32::OLE, а не один из модулей Excel? Конечно, если вам действительно интересно, как запускать макросы VBA, это одно. Но если вам просто нужно взаимодействовать с файлом Excel, для этого есть модули в Perl (без OLE).   -  person jimtut    schedule 10.03.2014
comment
Хороший вопрос! Позвольте мне просмотреть его.   -  person MeirG    schedule 10.03.2014
comment
Спасибо, джимтут! Давным-давно я использовал Perl для работы с электронными таблицами Excel, как для чтения, так и для записи, и в то время я был убежден, что Win32::OLE должен быть лучшим, разрабатываемым теми, кто разрабатывал OLE, не так ли? Недавно мне нужно было сделать это снова, поэтому я никогда не переставал передумать. jimtut заставил меня сделать это, и я обнаружил, что все эти модули xxx::Excel::yyy, скрывающиеся в CPAN, намного проще в использовании и более доступны для дополнений и улучшений. В моем случае это был Excel::Table и его потомки.   -  person MeirG    schedule 11.03.2014


Ответы (2)


Хорошо, я до сих пор не знаю ответа на свой первоначальный вопрос (и что хороший ответ на него по-прежнему будет полезен для многих), но я нашел альтернативный набор инструментов, см. jimtut комментарии и мой ответ выше.

person MeirG    schedule 11.03.2014

Копирование моего оригинального комментария здесь в полный ответ, поскольку он, похоже, помог оператору (и, возможно, он будет принят в качестве ответа):

Если вы используете Perl, почему вы должны использовать Win32::OLE, а не один из модулей Excel? Конечно, если вам действительно интересно, как запускать макросы VBA, это одно. Но если вам просто нужно взаимодействовать с файлом Excel, для этого есть модули в Perl (без OLE).

person jimtut    schedule 12.03.2014