[Note] Exécuter du code Python à partir d'Excel (xlwings)

Je crée un outil d'automatisation avec openpyxl + PyInstaller pour automatiser le travail (traitement de données Excel) effectué sur le PC d'une autre personne, mais le démarrage est lent et frustrant. Cependant, apprendre Excel VBA est une douleur. J'ai trouvé l'article suivant lorsque je me demandais s'il y avait un moyen plus simple.

Python est-il installé dans Excel? Ensuite, utilisez xlwings

Vous pouvez appeler du code Python à partir d'Excel et l'utiliser. Mais ça ne marche pas. A ce moment-là, j'ai trouvé l'article suivant.

[VBA] Essayez d'exécuter du code Python à partir de VBA (1) [Python]

Cela a fonctionné. Si vous installez Anaconda sur un PC Windows équipé d'Excel et que vous le configurez un peu, vous pouvez simplement transmettre le fichier Excel et le fichier Python. Je l'ai donc résumé dans un mémorandum.

environnement

Exécuter du code Python à partir d'Excel (comment faire)

On suppose que l'environnement ci-dessus est en place. xlwings et pywin32 sont installés en tant qu'ensemble avec Anaconda.

① Créez un classeur valide de macro Excel (* .xlsm)

Code Python et classeurs Excel prenant en charge les macros que vous créerez ultérieurement

  1. Doit être dans le même répertoire
  2. Les noms de fichiers (avant l'extension) sont les mêmes Est une condition préalable au fonctionnement. Le nom du fichier doit en tenir compte. Cette fois, le nom du fichier est "excel_test.xlsm".

② Importez xlwings.bas dans Excel VBE

  1. Démarrez Excel et cliquez sur "Visual Basic" sur l'onglet de développement pour démarrer VBE. image.png

  2. Cliquez sur Fichier VBE> Importer un fichier, sélectionnez le fichier (xlwings.bas) avec le chemin suivant et importez. Chemin: C: \ Users \ {username} \ Anaconda3 \ pkgs \ xlwings- {xlwings version} -py {Python version} \ Lib \ site-packages \ xlwings \ xlwings.bas image.png

Si l'importation réussit, "xlwings" sera créé dans le dossier du module standard comme indiqué dans la figure ci-dessous. image.png

③ Créez un fichier Python

Comme mentionné ci-dessus, créez-le dans le même répertoire avec le même nom de fichier (avant l'extension) que le classeur Excel prenant en charge les macros. Cette fois, le nom du fichier était "excel_test.py" et le code était le suivant.

excel_test.py


# coding: utf-8

import xlwings as xw


def copy_add_text():
    txt = xw.Range('A1').value
    txt += ', I am the Doctor.'
    xw.Range('B3').value = txt

(4) Ajoutez un module standard avec VBE et écrivez le code pour appeler la méthode du fichier Python.

Le contenu du code est le suivant.

1  Option Explicit
2  
3  Public Sub copyText()
4      Call RunPython("import excel_test; excel_test.copy_add_text()")
5  End Sub

[Supplément] L'argument sur la 4ème ligne est "" nom du module d'importation; nom du module.nom de la méthode "`.

⑤ Onglet Développement Excel> Appel car la méthode a été ajoutée à la macro

Le code cette fois est de coller la chaîne de caractères de la cellule A1 dans la cellule B3 de «●●, je suis le docteur». Le résultat de l'exécution est comme indiqué dans la figure ci-dessous. image.png

Autre

Une erreur d'importation Win32api s'est produite à pywin32 == 227. Résolu en définissant pywin32 == 224. Les détails sont inconnus.

Recommended Posts

[Note] Exécuter du code Python à partir d'Excel (xlwings)
Exécuter du code Python à partir de l'interface graphique C #
Exécutez Python à partir d'Excel
Exécuter des commandes depuis Python
Exécuter la commande depuis Python
Exécutez des scripts Python à partir d'Excel (en utilisant xlwings)
Exécutez Python à partir d'Excel VBA avec xlwings et un supplément de tutoriel
Introduction à Python pour les utilisateurs de VBA - Appeler Python depuis Excel avec xlwings -
Exécuter le script Python à partir du fichier de commandes
Création de graphique Excel à l'aide de python xlwings
Remarque: Python
[Note] Obtenir des données de PostgreSQL avec Python
Exécuter du code Python sur C ++ (en utilisant Boost.Python)
Remarque pour Pyjulia appelant Julia depuis Python
Essayez d'utiliser Excel en utilisant Python (Xlwings)
Note d'apprentissage Python_002
Remarque: décorateur Python
Modifier Excel à partir de Python pour créer un tableau croisé dynamique
[Python] Note d'apprentissage 1
Créer un tableau C à partir d'une feuille Python> Excel
Note d'apprentissage Python_004
sql à sql
code de caractère python
Charger et exécuter la commande depuis yml avec python
MeCab de Python
Note d'apprentissage Python_003
[Node-RED] Exécuter Python sur l'environnement virtuel Anaconda à partir de Node-RED [Anaconda] [Python]
[Python] Code conscient des algorithmes
[Remarque] openCV + python
Je veux créer du code C ++ à partir de code Python!
Note du débutant Python
J'ai essayé d'exécuter du code Python à partir de .Net en utilisant Pythonnet (édition Hallo World)
Excel avec Python
[Python] Lecture du code source Django Vue à partir de zéro ①
Lecture de données CSV à partir du code Python de stockage d'objets DSX
Manipuler des fichiers Excel à partir de python avec xlrd (mémo personnel)
Récupérer le code retour d'un script Python depuis bat
Lire le code QR à partir du fichier image avec Python (Mac)
Commençons Python à partir d'Excel. Je n'utilise pas VBA.
Mercurial a cessé de fonctionner après la migration de Python 2 vers Python 3 (Remarque)
Exécuter la fonction Python à partir de Powershell (comment passer des arguments)
Touchez MySQL depuis Python 3
[Note] future déclaration ~ Python ~
Exploitez Filemaker depuis Python
[Note] Lecture de fichier ~ Python ~
Accéder à bitcoind depuis python
Changements de Python 3.0 à Python 3.5
Changements de Python 2 à Python 3.0
Python depuis ou import
Réécrire le code Python2 en Python3 (2to3)
infomap code de dessin Python
Exécuter automatiquement le fichier python
Utilisez MySQL depuis Python
Avant d'écrire du code Python
Gérez Excel avec python
Utiliser MySQL depuis Python