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.
On suppose que l'environnement ci-dessus est en place. xlwings et pywin32 sont installés en tant qu'ensemble avec Anaconda.
Code Python et classeurs Excel prenant en charge les macros que vous créerez ultérieurement
Démarrez Excel et cliquez sur "Visual Basic" sur l'onglet de développement pour démarrer VBE.
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
Si l'importation réussit, "xlwings" sera créé dans le dossier du module standard comme indiqué dans la figure ci-dessous.
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
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 "`.
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.
Une erreur d'importation Win32api s'est produite à pywin32 == 227. Résolu en définissant pywin32 == 224. Les détails sont inconnus.
Recommended Posts