Как вызвать скрипт python на excel vba?

попытка вызвать скрипт python на Vba, и я newb. Я попытался преобразовать основной скрипт в exe с помощью py2exe, а затем вызвать его из VBA (shell), но основной скрипт вызывает другие скрипты, поэтому он становится сложным, и я испортил его (мой exe не работает). Кроме того, основной скрипт-это большой файл, и я не хочу его много пересматривать.

Bottomline, есть ли способ вызвать основной скрипт из excel vba, без преобразования скрипта в exe-файл.

до сих пор я пытался:

RetVal = Shell("C:python27python.exe " & "import " & "C:" & "MainScriptFile")

запускается python.exe, но больше ничего не делает. Тогда я попробовал:--3-->

RetVal = Shell("C:WindowsSystem32cmd.exe " & "python " & "C:Python27hello.py")

он запускает командную строку, но даже не запускает python.

P. S. Я проверил все связанные с этим вопросы на форуме, они не решают моей проблемы.

4 ответов


попробуйте это:

RetVal = Shell("<full path to python.exe> " & "<full path to your python script>")

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

RetVal = Shell("<full path to python.exe> " & ActiveWorkBook.Path & "\<python script name>")

все детали в <> должны быть предоставлены. <> - указывает на изменяемые поля

думаю, это должно сработать. Но опять же, если ваш скрипт собирается вызвать другие файлы, которые находятся в разных папках, это может вызвать ошибки, если ваш скрипт не обработал его должным образом. Надеюсь, это поможет.


есть несколько способов решить эту проблему

Pyinx-довольно легкий инструмент, который позволяет вызывать Python из пространства процесса excel http://code.google.com/p/pyinex/

Я использовал этот несколько лет назад (когда он активно разрабатывался), и он работал довольно хорошо

Если вы не против платить, это выглядит довольно хорошо!--1-->

https://datanitro.com/product.html

Я никогда не использовал его, Хотя


хотя, если вы уже пишете на Python, возможно, вы могли бы полностью отказаться от excel и сделать все в чистом python? Гораздо проще поддерживать одну базу кода (python), а не 2 (python + любой наложенный excel).

Если вам действительно нужно вывести свои данные в excel, есть даже некоторые довольно хорошие инструменты для этого в Python. Если это может сработать, дайте мне знать, и я получу ссылки.


вы также можете попробовать ExcelPython что позволяет вам манипулировать объектом Python и вызывать код из VBA.


попробуйте это:

retVal = Shell("python.exe <full path to your python script>", vbNormalFocus)

заменить <full path to your python script> С полным путем