Olivia, parte de este equipo, nos ha hecho el favor de escribir esta sección porque controla perfectamente dicho tema.
Solución:
Prueba esto:
RetVal = Shell(" " & "")
O si la secuencia de comandos de python está en la misma carpeta que el libro de trabajo, puede intentar:
RetVal = Shell(" " & ActiveWorkBook.Path & "")
Todos los detalles dentro <>
se van a dar. <>
– indica campos modificables
Supongo que esto debería funcionar. Pero, de nuevo, si su secuencia de comandos va a llamar a otros archivos que se encuentran en carpetas diferentes, puede causar errores a menos que su secuencia de comandos lo haya manejado correctamente. Espero eso ayude.
Me acabo de encontrar con este viejo post. Nada de lo mencionado anteriormente realmente funcionó para mí. Probé el siguiente script y funcionó bien en mi sistema. Compartiendo aquí, en beneficio de otros que vienen aquí después de mí.
Sub RunPython()
Dim objShell As Object
Dim PythonExe, PythonScript As String
Set objShell = VBA.CreateObject("Wscript.Shell")
PythonExe = """C:your_pathPythonPython38python.exe"""
PythonScript = "C:your_pathfrom_vba.py"
objShell.Run PythonExe & PythonScript
End Sub
Hay un par de maneras de resolver este problema
Pyinx: una herramienta bastante liviana que le permite llamar a Python desde el espacio de proceso de Excel http://code.google.com/p/pyinex/
Usé este hace unos años (cuando se estaba desarrollando 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 Excel 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 exportar sus datos a Excel, incluso hay algunas herramientas bastante buenas para eso en Python. Si eso puede funcionar mejor, hágamelo saber y conseguiré los enlaces.
Te mostramos las reseñas y valoraciones de los usuarios
Agradecemos que desees estimular nuestro trabajo escribiendo un comentario o dejando una valoración te damos las gracias.