web-dev-qa-db-fra.com

Comment appeler le script python sur Excel vba?

essayant d'appeler un script python sur Vba et je suis un newb. J'ai essayé de convertir le script principal en un exe en utilisant py2exe puis en l'appelant depuis VBA (Shell) mais le script principal appelle d'autres scripts donc ça devient compliqué et je l'ai gâché (mon exe n'est pas fonctionnel) De plus, le script principal est un gros fichier et je ne veux pas trop le réviser.

En résumé, existe-t-il un moyen d'appeler le script principal à partir d'Excel vba, sans convertir le script en un fichier exe.

Jusqu'à présent, j'ai essayé:

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

Il démarre python.exe mais ne fait rien d'autre. J'ai ensuite essayé:

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

Il démarre l'invite de commande mais ne démarre même pas python.

P.S. J'ai vérifié toutes les questions connexes dans le forum, elles ne résolvent pas mon problème.

25
Ege Ozlem

Essaye ça:

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

Ou si le script python se trouve dans le même dossier que le classeur, vous pouvez essayer:

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

Tous les détails dans <> doivent être donnés. <> - indique les champs modifiables

Je suppose que cela devrait fonctionner. Mais là encore, si votre script va appeler d'autres fichiers qui se trouvent dans des dossiers différents, il peut provoquer des erreurs à moins que votre script ne l'ait correctement géré. J'espère que ça aide.

24
Rajgopal C

Il existe plusieurs façons de résoudre ce problème

Pyinx - un outil assez léger qui vous permet d'appeler Python à partir de l'espace de traitement Excel http://code.google.com/p/pyinex/

J'ai utilisé celui-ci il y a quelques années (à l'époque où il était activement développé) et il fonctionnait assez bien

Si cela ne vous dérange pas de payer, cela semble assez bon

https://datanitro.com/product.html

Je ne l'ai jamais utilisé


Bien que si vous écrivez déjà en Python, vous pourriez peut-être supprimer Excel entièrement et tout faire en python pur? Il est beaucoup plus facile de maintenir une base de code (python) plutôt que 2 (python + quelle que soit la superposition Excel que vous avez).

Si vous devez vraiment sortir vos données dans Excel, il existe même de très bons outils pour cela en Python. Si cela fonctionne mieux, faites-le moi savoir et j'obtiendrai les liens.

5
Brad

Vous pouvez également essayer ExcelPython qui vous permet de manipuler Python et appeler le code de VBA.

1
ehremo