Maintenant, exécutez Python à partir d'Excel-VBA en utilisant xlwings et essayez de travailler avec des fichiers Excel sur python.
On peut dire que VBA va bien, mais je ne veux pas écrire VBA, donc ça ne peut pas être aidé w
Pour savoir comment utiliser xlwings, reportez-vous à Essayez d'utiliser Excel avec Python (Xlwings).
Au fait, l'environnement est Mac, mais xlwings fonctionne sous Windows.
VBA: Calling Python from Excel
Tout va bien, mais je préparerai un script qui définit la valeur appropriée dans le fichier Excel.
from xlwings import Workbook, Range
def myfunction():
wb = Workbook.caller()
Range('A1').value = "Call Python!"
Créez un nouveau fichier Excel, ouvrez l'éditeur avec Alt + F11 et enregistrez la macro
Sub SampleCall()
RunPython ("import myproject;myproject.myfunction()")
End Sub
Myproject
est le nom du script python.
La fonction que «myfunction» veut exécuter.
Vous devez importer un module VBA appelé xlwings.bas
dans un fichier.
xlwings.bas
se trouve dans le répertoire xlwigns installé.
Si vous souhaitez connaître le chemin, vous pouvez facilement le trouver dans la console Python
import xlwings
xlwings.__path__
Enregistrez la macro créée SampleCall ()
dans un objet approprié et exécutez-la pour terminer.
Pour Mac, le module vba xlswings semble lire .bash_profile
et définir le chemin python.
Si vous utilisez bash, il sera défini, donc il n'y aura pas de problème, mais si vous utilisez zsh comme vous, vous obtiendrez l'erreur suivante car .bash_profile
n'est pas préparé.
importError: No module named xlwings
Créez un bash_profile ou réécrivez xlwings.bas
pour charger zshrc.
Pour réécrire, réécrivez simplement le .bash_profile
ci-dessous en .zshrc
.
'Check if .bash_profile is existing and source it
Res = system("source ~/.bash_profile")
If Res = 0 Then
Res = system("source ~/.bash_profile;" & RunCommand & """" & WORKBOOK_FULLNAME & """ ""from_xl""" & " " & Chr(34) & ToPosixPath(Application.Path) & "/" & Application.Name & Chr(34) & ">" & Chr(34) & LOG_FILE & Chr(34) & " 2>&1 &")
Else
Res = system(RunCommand & """" & WORKBOOK_FULLNAME & """ ""from_xl""" & " " & Chr(34) & ToPosixPath(Application.Path) & "/" & Application.Name & Chr(34) & ">" & Chr(34) & LOG_FILE & Chr(34) & " 2>&1 &")
End If
Tips
S'il est difficile d'importer xlwings.bas
un par un
Si vous exécutez la commande suivante dans la console, elle générera un fichier Excel importé et un script python appelé.
xlwings quickstart myproject
Recommended Posts