Führen Sie nun Python in Excel-VBA mit xlwings aus und versuchen Sie, mit Excel-Dateien auf Python zu arbeiten.
Es mag die Rede sein, dass VBA in Ordnung ist, aber ich möchte kein VBA schreiben, daher kann es nicht geholfen werden
Informationen zur Verwendung von xlwings finden Sie unter Versuchen Sie, Excel mit Python (Xlwings) zu betreiben.
Die Umgebung ist übrigens Mac, aber xlwings funktioniert unter Windows.
VBA: Calling Python from Excel
Alles ist in Ordnung, aber bereiten wir ein Skript vor, das den entsprechenden Wert in der Excel-Datei festlegt.
from xlwings import Workbook, Range
def myfunction():
wb = Workbook.caller()
Range('A1').value = "Call Python!"
Erstellen Sie eine neue Excel-Datei, öffnen Sie den Editor mit Alt + F11 und registrieren Sie das Makro
Sub SampleCall()
RunPython ("import myproject;myproject.myfunction()")
End Sub
Myproject
hier ist der Name des Python-Skripts.
Die Funktion, die myfunction
ausführen möchte.
Sie müssen ein VBA-Modul namens "xlwings.bas" in eine Datei importieren.
xlwings.bas befindet sich im installierten xlwigns-Verzeichnis.
Wenn Sie den Pfad herausfinden möchten, können Sie ihn leicht in der Python-Konsole finden
import xlwings
xlwings.__path__
Registrieren Sie das erstellte Makro "SampleCall ()" in einem geeigneten Objekt und führen Sie es aus, um den Vorgang abzuschließen.
Für Mac scheint das xlswings vba-Modul ".bash_profile" zu lesen und den Python-Pfad festzulegen.
Wenn Sie bash verwenden, wird es festgelegt, sodass es kein Problem gibt. Wenn Sie jedoch zsh wie Sie selbst verwenden, wird der folgende Fehler angezeigt, da .bash_profile
nicht vorbereitet ist.
importError: No module named xlwings
Erstellen Sie ein bash_profile oder schreiben Sie xlwings.bas
neu, um zshrc zu laden.
Um neu zu schreiben, schreiben Sie einfach das unten stehende ".bash_profile" in ".zshrc" um.
'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
Wenn es schwierig ist, xlwings.bas
einzeln zu importieren
Wenn Sie den folgenden Befehl in der Konsole ausführen, werden eine importierte Excel-Datei und ein Python-Skript mit dem Namen generiert.
xlwings quickstart myproject
Recommended Posts