Führen Sie Python aus Excel VBA mit xlwings & Tutorial Supplement aus

Lesen Sie den Artikel, in dem Qiita Python mit Excel VBA unter Verwendung einer Bibliothek namens xmlwings ausführen kann, und schreiben Sie eine kleine Ergänzung zu Schnellstart +. Normalerweise schreibe ich in meinem Blog, daher halte ich es für eine gute Idee, eine Beilage zu Qiita zu schreiben.

Es scheint, dass sich xlwings seit Version 0.9 erheblich geändert hat, und da es mit dem aktuellen Code nicht funktioniert, habe ich ungefähr Version 0.9 oder höher hinzugefügt

Entwicklungsumgebung

Installation

Es gibt nichts Besonderes, nur mit pip installieren

pip install xlwings

In meiner Umgebung wird es am folgenden Speicherort installiert. Speicherort, auf den beim späteren Importieren von Dateien von der Excel-Seite verwiesen werden soll C:\Python27\Lib\site-packages\xlwings

Probe ausführen

Beispielcode

Python-Modul aus Excel aufgerufen

mymodule.py


import numpy as np
from xlwings import Workbook, Range

def rand_numbers():
    """ produces standard normally distributed random numbers with shape (n,n)"""
    wb = Workbook.caller()  # Creates a reference to the calling Excel file
    n = int(Range('Sheet1', 'B1').value)  # Write desired dimensions into Cell B1
    rand_num = np.random.randn(n, n)
    Range('Sheet1', 'C3').value = rand_num

Referenz: https://docs.xlwings.org/en/stable/migrate_to_0.9.html

mymodule.py


import numpy as np
import xlwings as xw

def rand_numbers():
    """ produces standard normally distributed random numbers with shape (n,n)"""
    wb = xw.Book.caller()  # Creates a reference to the calling Excel file
    n = int(wb.sheets['Sheet1'].range('B1').value)  # Write desired dimensions into Cell B1
    rand_num = np.random.randn(n, n)
    wb.sheets['Sheet1'].range('C3').value = rand_num

VBA-Code auf der Excel-Seite geschrieben

Vor Version 0.9 konnte es auch dann verwendet werden, wenn es sich nicht um eine RAW-Zeichenfolge handelte. In der aktuellen Version nach Version 0.9 verwenden Sie jedoch, wenn Sie "" verwenden, eine RAW-Zeichenfolge oder setzen Sie den Pfadbegrenzer auf "/" Wenn Sie es nicht einstellen, tritt ein Fehler auf.

ExcelVBA


Sub RandomNumbers()
    RunPython ("sys.path.append('C:\Temp'); import mymodule; mymodule.rand_numbers()")
End Sub

ExcelVBA


Sub RundomNumbers()
    RunPython ("sys.path.append(r'C:\Temp'); import mymodule; mymodule.rand_numbers()")
'    RunPython ("sys.path.append('C:/Temp'); import mymodule; mymodule.rand_numbers()")
End Sub

In diesem VBA-Codebeispiel Es heißt "RunPython (" import mymodule; mymodule.rand_numbers () ")", aber ich frage mich, ob dies eine kleine Falle im Tutorial ist. Es wird angegeben, wo die Datei mymodule.py abgelegt werden soll, aber es spielt keine Rolle, wo Sie sie ablegen, wenn Sie vor dem Importieren von RunPython einen beliebigen Pfad hinzufügen. Dieses Mal habe ich "mymodule.py" in "C: \ Temp" eingefügt, was nicht im Pfad enthalten ist. Excel selbst sollte in C: \ Users \ h_oki \ Documents \ book als test.xlsm gespeichert werden, und ich wollte die Module an einem anderen Ort aufbewahren, aber sicherstellen, dass sie zum Testen von überall gelesen werden können. Ich wollte es wie oben machen.

Ergänzung

Es spielt keine Rolle, ob es sich um VBA oder Excel handelt, es wird lediglich der Python-Code ausgeführt, sodass Sie ihn in jedes Modul laden können, indem Sie den Pfad danach festlegen. import sys wird in xlwings von selbst gelesen, sodass Sie es nicht eingeben müssen. Im Beispielcode kann es nur gelesen werden, wenn es im Pfad oder direkt darunter platziert ist. Wenn Sie es jedoch in einem beliebigen Pfad platzieren möchten, geben Sie "sys.path.append (" / your / to / path ") vor" import my module "ein Alles was Sie tun müssen, ist es einzuschreiben. Auch wenn Sie nicht "sys.path.append (" / your / to / path ") hinzufügen, scheint es kein Problem zu geben, wenn der Speicherort in der Umgebungsvariablen" PYTHONPATH "festgelegt ist.

Ausführungsergebnis

Ich konnte das Bild aus irgendeinem Grund nicht hochladen. Bitte lassen Sie es weg. Ich konnte jedoch "mymodule.py" (den Schnellstartcode selbst) an einer beliebigen Stelle ausführen.

Referenzartikel

In Verbindung stehender Artikel

Verwenden Sie xlwings Ich habe ein Python-Skript aus Excel ausgeführt und mit xlwings gespielt, mit denen die Ergebnisse in Excel grafisch dargestellt werden können.

offiziell

xlwings offiziell Quickstart

Recommended Posts

Führen Sie Python aus Excel VBA mit xlwings & Tutorial Supplement aus
Einführung in Python für VBA-Benutzer - Aufrufen von Python aus Excel mit xlwings-
Führen Sie Python mit VBA aus
Führen Sie Python aus Excel aus
Führen Sie Python-Skripte in Excel aus (mit xlwings).
Führen Sie Aprili von Python auf Orange aus
[Hinweis] Führen Sie Python-Code aus Excel aus (xlwings)
Excel mit Python
Lesen Sie den Excel-Namen / Zellbereich mit Python VBA
Führen Sie prepDE.py mit python3 aus
Behandle Excel mit Python
Führen Sie Blender mit Python aus
Cloud Run Tutorial (Python)
Betreiben Sie Excel mit Python (1)
Führen Sie iperf mit Python aus
Betreiben Sie Excel mit Python (2)
Bearbeiten Sie Excel-Dateien aus Python mit xlrd (persönliches Memo)
Beginnen wir Python aus Excel. Ich benutze kein VBA.
Python + Selen + Safari - Führen Sie die iPhone Safari vom Mac mit dem Webdriver aus
Betreiben Sie Excel mit Python Open Pyxl
Führen Sie Python mit PyCharm aus (Windows)
Führen Sie Python mit CloudFlash aus (arm926ej-s)
Führen Sie das Illustrator-Skript von Python aus
Führen Sie Label mit tkinter [Python] aus.
Mit Skype benachrichtigen Sie mit Skype von Python!
Solver> Link> Lösen Sie Excel Solver mit Python
Rufen Sie C von Python mit DragonFFI auf
Verwenden von Rstan aus Python mit PypeR
Installieren Sie Python von der Quelle mit Ansible
Führen Sie Rotrics DexArm mit der Python-API aus
Führen Sie mruby mit Python oder Blender aus
Lass uns mit Python mit Python spielen [Anfänger]
Führen Sie XGBoost mit Cloud Dataflow (Python) aus.
Führen Sie python3 Django1.9 mit mod_wsgi aus (deploy)
Behandeln Sie Excel-CSV-Dateien mit Python
Python-Fehlererkennung von Powershell ausgeführt
Führen Sie Python-Skripte synchron von C # aus
Rufen Sie Python von Nim mit Nimpy auf
Excel-Diagrammerstellung mit Python xlwings
Bis Python auf Apache läuft
Führen Sie Ansible über Python mithilfe der API aus
Laden Sie fbx aus Python mitinema4d
Führen Sie das Python-Skript in Cisco Memorandum_EEM aus
Sammeln von Informationen von Twitter mit Python (Twitter API)
Führen Sie Cloud Dataflow (Python) über AppEngine aus
Empfangen Sie Textdaten von MySQL mit Python
Holen Sie sich HTML von Element mit Python-Selen
[Hinweis] Mit Python Daten von PostgreSQL abrufen
Führen Sie das Servo mit Python unter ESP32 (Windows) aus.
Spielen Sie eine Audiodatei von Python mit Interrupt ab
Erstellen Sie mit python3 eine Wortwolke aus Ihrem Tweet
[In-Database Python Analysis Tutorial mit SQL Server 2017]
Onkel SES modernisiert die VBA-App mit Python
Zeichnen Sie Nozomi Sasaki in Excel mit Python
Erstellen Sie schnell eine Excel-Datei mit Python #python
Führen Sie Keras mit CNTK-Backend unter CentOS aus