python shell excel-vba py2exe vba

¿Cómo llamar script Python en Excel VBA?



shell excel-vba (4)

tratando de llamar a un script de python en Vba y soy un newb. Intenté convertir el script principal a un exe usando py2exe y luego llamarlo desde VBA (shell), pero el script principal llama a otros scripts, por lo que se complica y lo estropeé (mi exe no es funcional). Además, el script principal es un archivo grande y no quiero revisarlo mucho.

En pocas palabras, hay una manera de llamar al script principal desde excel vba, sin convertir el script en un archivo exe.

Hasta ahora, he intentado:

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

Se inicia python.exe pero no hace nada más. Entonces intenté:

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

Inicia el símbolo del sistema pero ni siquiera inicia python.

PD: revisé todas las preguntas relacionadas en el foro, no solucionaron mi problema.


Hay un par de maneras de resolver este problema.

Pyinx: una herramienta bastante liviana que le permite llamar a Python desde el espacio del proceso de Excel http://code.google.com/p/pyinex/

He usado este hace algunos años (cuando estaba siendo desarrollado activamente) y funcionó bastante bien

Si no te importa pagar, esto se ve bastante bien.

https://datanitro.com/product.html

Aunque nunca lo he usado

¿Aunque si ya está escribiendo en Python, tal vez podría dejar de sobresalir por completo y hacer todo en python puro? Es mucho más fácil mantener una base de código (python) en lugar de 2 (python + cualquier superposición de Excel que tenga).

Si realmente tiene que enviar sus datos a Excel, incluso hay algunas herramientas bastante buenas para eso en Python. Si eso funciona mejor, avísame y obtendré los enlaces.


Prueba esto:

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

Reemplace <full path to your python script> con la ruta completa


Prueba esto:

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

O si la secuencia de comandos de python está en la misma carpeta que el libro de trabajo, puede intentar:

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

Todos los detalles dentro de <> deben ser dados. <> - indica campos intercambiables

Supongo que esto debería funcionar. Pero nuevamente, si su script va a llamar a otros archivos que están en carpetas diferentes, puede causar errores a menos que su script lo haya manejado correctamente. Espero eso ayude.


También puede probar ExcelPython que le permite manipular el objeto Python y el código de llamada de VBA.