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

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

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

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

RetVal = Shell("C:\python27\python.exe " & "import " & "C:\\" & "MainScriptFile") 

Он запускает файл python.exe, но ничего не делает. Затем я попробовал:

 RetVal = Shell("C:\Windows\System32\cmd.exe " & "python " & "C:\\Python27\\hello.py") 

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

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

4 Solutions collect form web for “Как вызвать скрипт python на excel vba?”

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

 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/

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

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

https://datanitro.com/product.html

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


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

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

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

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

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

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

Python - лучший язык программирования в мире.