J'ai un code Python qui lit 3 arguments (scalaires) et des fichiers texte, puis me renvoie un vecteur de double. Je veux écrire une macro dans VBA pour appeler ce code Python et écrire les résultats dans l'une des mêmes feuille Excel. Je voulais savoir quel était le moyen le plus simple de le faire, voici quelques affaires que j'ai trouvées: p>
Appelez la fonction Shell () dans VBA, mais cela ne semble pas si facile d'obtenir la valeur de retour. P> li>
enregistre le code Python en tant qu'objet COM et l'appelez de VBA -> Je ne sais pas comment faire cela, donc si vous avez des exemples, ce serait plus que le bienvenu p> li >
Créez un outil personnalisé dans une boîte à outils personnalisée, dans VBA Créez un objet de géotraitement, puis AddTooolbox, puis nous pouvons utiliser l'outil personnalisé directement via l'objet géoproducteur, mais c'est quelque chose aussi bien que je ne sais pas comment je ne sais pas comment je ne sais pas comment faire .. p> li> ul>
TOUT TIPS? P>
6 Réponses :
Devez-vous appeler le code Python comme une macro? Vous pouvez utiliser les crochets COM dans le script Python pour diriger Excel et éviter d'utiliser une autre langue:
Bonjour Katrielaalex, Eh bien, j'ai besoin de pouvoir exécuter ce code à partir d'Excel, cliquez simplement sur un bouton sur lequel j'ignais une macro. Cela me permet d'appeler Excel de Python mais je veux faire le contraire.
Suivez ces étapes avec soin
Une fois que l'installation est une invite de commande ouverte complète et accédez à p>
C: \ python25 \ lib \ sites-packages \ Win32ComeXT \ AxScript \ Client P> blockQuote> li>
exécuté
\> python pyscript.py code> Vous devriez voir Message enregistré: Python P> LI>
aller à MS Bureau Excel et Ouvrir la feuille de calcul p> li>
- Aller à Outils> Macros> Visual Basic Editor Li>
- Ajoutez une référence à la commande
Microsoft Script Control fort> li> - ajoutez un nouveau formulaire utilisateur. Dans l'userForm Ajouter un CommandButton LI>
Basculez vers l'éditeur de code et insérez le code suivant P>
Dim With Atouffent Pyscript comme Msscripttrol.scriptControl p>
Private Sub CommandButton1_Click() If PyScript Is Nothing Then Set PyScript = New MSScriptControl.ScriptControl PyScript.Language = "python" PyScript.AddObject "Sheet", Workbooks(1).Sheets(1) PyScript.AllowUI = True End If PyScript.ExecuteStatement "Sheet.cells(1,1).value='Hello'" End Sub
Ce n'est pas gratuit pour une utilisation de la production
Voici un bon lien pour Excel de / à Python Utilisation: P>
continuum.io/Undre-excel p>
Mentions Xlwings, Datanitro, Expy, Pyxll, Xlloop, OpinPyxl, XLRD, XLSXWriter, XLWT P>
J'ai aussi trouvé que ExcelPython est en cours de développement actif. P>
2. P>
Ce que vous pouvez faire avec VBA + Python suit: P>
Compilez vos scripts PY qui prennent des entrées et génèrent des sorties sous forme de fichiers texte ou de console. Ensuite, VBA préparera l'entrée pour PY, appelez le script PY pré-compilé et lisez sa sortie. P>
3. p>
Considérez Google Docs, OpenOffice ou LibreOffice qui prennent en charge les scripts Python. P>
Cela suppose que les options disponibles avec les interfaces de script COM ou MS ne satisfont pas à vos besoins. P>
Ce n'est pas une approche gratuite, mais il convient de mentionner (figurant dans Forbes et New York Times): P>
Ce n'est pas gratuit pour une utilisation commerciale: P>
pyxll - Excel Adidin qui permet aux fonctions écrites dans Python d'être appelées à Excel. P>
Il y a un tutoriel sur CodeProject sur la façon de faire cela. P>
voir http: //www.codeproject .Com / Articles / 639887 / Calling-Python-Code-de-Excel-with-ExcelPython . P>
Une autre source open source Python-Excel dans l'outil COM de processus Com. Cela permet d'exécuter des scripts Python d'Excel de manière étroitement intégrée. P>
https://pypi.python.org/pypi/python -Pour-Excel / Beta,% 201.1 P>
XLWINGS est une bibliothèque Python sous licence BSD qui facilite l'appel à Python d'Excel et de vice Versa. P>
udfs strong>: Écrivez les fonctions définies par l'utilisateur (UDF) dans Python (Windows uniquement). P> LI>
Installation forte> p> li>
Pour que la commande shell fonctionne, regardez ici: Stackoverflow.com/Questtions/1439200/...
J'utilise une "classe de passerelle". Considérée comme une passerelle car elle ouvre le monde riche de l'écosystème Python au développeur Excel VBA ExcelDevelopmentplatForm.blogspot.com/2018/06/...