Comment appeler le script python sur excel vba?

j'essaie d'appeler un script python sur Vba et je suis un newb. J'ai essayé de convertir le script principal en exe en utilisant py2exe puis en l'appelant à partir de VBA (shell) mais le script principal appelle d'Autres scripts donc cela devient compliqué et je l'ai foiré (mon exe n'est pas fonctionnel). En outre, le script principal est un gros fichier et je ne veux pas le réviser beaucoup.

Bottomline, y a-t-il un moyen d'appeler le script principal à partir de excel vba, sans convertir le script en fichier exe.

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

RetVal = Shell("C:python27python.exe " & "import " & "C:" & "MainScriptFile")

ça commence python.exe, mais ne fait rien d'autre. Ensuite, j'ai essayé:

RetVal = Shell("C:WindowsSystem32cmd.exe " & "python " & "C:Python27hello.py")

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

<!-J'ai vérifié toutes les questions connexes dans le forum, ils ne résolvent pas mon problème.

23
demandé sur Community 2013-08-09 00:31:35

4 réponses

essaye ceci:

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

Ou si le script python est dans le même répertoire 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 des champs variables

je suppose que ça devrait marcher. Mais encore une fois, si votre script va appeler d'autres fichiers qui sont dans des dossiers différents, il peut causer des erreurs à moins que votre script ne l'ait correctement manipulé. Espérons que cela aide.

19
répondu Rajgopal C 2017-07-04 11:30:37

Il ya un couple de façons de résoudre ce problème

Pyinx-un outil plutôt léger qui vous permet D'appeler Python à partir de l'espace de processus excel http://code.google.com/p/pyinex/

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

si ça ne vous dérange pas de payer, ça a l'air joli bon

https://datanitro.com/product.html

je n'ai jamais utilisé


bien que si vous êtes déjà en train d'écrire en Python, peut-être que vous pourriez laisser tomber excel entièrement et faire tout en python pur? Il est beaucoup plus facile de maintenir une base de code (python) plutôt que 2 (python + peu importe la superposition excel que vous avez).

si vous avez vraiment à produire vos données dans excel, il ya même quelques assez bons outils pour cela dans Python. Si ça peut marcher, prévenez-moi et j'aurai les liens.

5
répondu Brad 2013-08-08 20:52:42

vous pouvez aussi essayer ExcelPython qui vous permet de manipuler l'objet Python et le code d'appel depuis VBA.

1
répondu ehremo 2014-03-25 15:16:52

essaye ceci:

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

remplacer <full path to your python script> avec le chemin d'accès complet

-1
répondu T Roc 2016-07-22 11:15:27