Как мне вызвать Perl-скрипт из Excel? - PullRequest
4 голосов
/ 06 марта 2009

Я хочу вызвать Perl-скрипт из Excel, используя VBA. Я использовал команду оболочки. Я также использовал код ниже:

Function Chk()
Dim RetVal
RetVal = Shell("C:\Perl\bin\Hello.pl", 1)
End Function

Но вышеуказанная функция не запускает файл. Есть ли ошибка?

Есть ли другой способ вызова сценария Perl или внешней программы с использованием Excel?

Ответы [ 4 ]

5 голосов
/ 06 марта 2009

Посмотрите на расширения Perl ActiveState. У них есть «ActivePerl» DLL, которая запускает интерпретатор Perl как компонент ActiveX, который должен обеспечивать бесшовную интеграцию с Excel.

Кроме того, их расширения OLE позволяют Perl получать доступ ко всему объекту Excel OLE. модель, чтобы вы могли очень точно управлять таблицей.

4 голосов
/ 06 марта 2009

Вы также можете добавить эту строку первой в вашем скрипте:

#!c:\perl\bin\perl.exe
4 голосов
/ 06 марта 2009

Вам нужно будет раскошелиться на:

 c:\perl\bin\perl.exe Hello.pl 

чтобы запустить.

1 голос
/ 07 марта 2009

Функция Excel () в Excel, вероятно, игнорирует ассоциации файлов. Вы почти наверняка должны сказать что-то более похожее на:

Function Chk()
  Dim RetVal
  Chk = Shell("C:\Perl\bin\perl.exe C:\Perl\bin\Hello.pl", 1)
End Function

чтобы получить эффект, который вы хотели. Два изменения, на которые следует обратить внимание: во-первых, явный вызов perl.exe, а во-вторых, небольшая синтаксическая ошибка в вашей функции, как написано.

Обратите внимание, что если в пути к perl.exe или пути к вашему сценарию (или к любым дополнительным аргументам к вашему сценарию) есть пробелы, вам нужно будет сформировать строку, содержащую символы в двойных кавычках, заключенные в кавычки что-то вроде:

Function Chk()
  Dim RetVal
  Chk = Shell("C:\Perl\bin\perl.exe ""C:\Some path\with spaces\Hello.pl""", 1)
End Function

сделает свое дело.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...