Как вызвать скрипт 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>
С полным путем