Как вызвать python script на excel vba?

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

Bottomline, есть способ вызвать основной script из excel vba, не преобразовывая script в 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.

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

Ответы

Ответ 1

Попробуйте следующее:

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

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

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

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

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

Ответ 2

Существует несколько способов решения этой проблемы.

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

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

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

https://datanitro.com/product.html

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


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

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

Ответ 3

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

Ответ 4

Попробуйте следующее:

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

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