Ich erstelle mit openpyxl + PyInstaller ein Automatisierungstool, um die Arbeit (Excel-Datenverarbeitung) auf dem PC einer anderen Person zu automatisieren, aber der Start ist langsam und frustrierend. Das Erlernen von Excel VBA ist jedoch ein Schmerz. Ich fand den folgenden Artikel, als ich mich fragte, ob es einen einfacheren Weg gibt.
Sie können Python-Code aus Excel aufrufen und verwenden. Aber es funktioniert nicht. Zu dieser Zeit fand ich den folgenden Artikel.
[[VBA] Versuchen Sie, Python-Code von VBA (1) [Python]] auszuführen (https://celaeno42.hatenablog.com/entry/2018/12/03/191854)
Das hat funktioniert. Wenn Sie Anaconda auf einem Windows-PC mit Excel installieren und ein wenig einrichten, können Sie einfach die Excel-Datei und die Python-Datei übergeben. Also habe ich es in einem Memorandum zusammengefasst.
Es wird davon ausgegangen, dass die oben genannte Umgebung vorhanden ist. xlwings und pywin32 werden als Set mit Anaconda installiert.
Python-Code und makrofähige Excel-Arbeitsmappen, die Sie später erstellen werden
Starten Sie Excel und klicken Sie auf der Registerkarte "Entwicklung" auf "Visual Basic", um VBE zu starten.
Klicken Sie auf VBE-Datei> Datei importieren, wählen Sie die Datei (xlwings.bas) mit dem folgenden Pfad aus und importieren Sie sie. Pfad: C: \ Benutzer \ {Benutzername} \ Anaconda3 \ pkgs \ xlwings- {xlwings-Version} -py {Python-Version} \ Lib \ site-packages \ xlwings \ xlwings.bas
Wenn der Import erfolgreich ist, wird "xlwings" im Standardmodulordner erstellt (siehe Abbildung unten).
Wie oben erwähnt, erstellen Sie es im selben Verzeichnis mit demselben Dateinamen (vor der Erweiterung) wie die mit Makros aktivierte Excel-Arbeitsmappe. Diesmal war der Dateiname "excel_test.py" und der Code war wie folgt.
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
Der Inhalt des Codes ist wie folgt.
1 Option Explicit
2
3 Public Sub copyText()
4 Call RunPython("import excel_test; excel_test.copy_add_text()")
5 End Sub
[Ergänzung] Das Argument in der 4. Zeile lautet "Modulname importieren; Modulname. Methodenname".
Diesmal müssen Sie die Zeichenfolge von Zelle A1 in Zelle B3 von "●●, ich bin der Doktor" einfügen. Das Ausführungsergebnis ist in der folgenden Abbildung dargestellt.
Bei pywin32 == 227 ist ein Win32api-Importfehler aufgetreten. Gelöst durch Setzen von pywin32 == 224. Details sind unbekannt.
Recommended Posts