Die Bedienung ist einfach, geben Sie einfach die Nummer in Zelle A1 ein. Ich versuche es mit ** Windows **.
Starten Sie zur Vorbereitung zunächst eine neue Berechnung.
Bitte setzen Sie das Python-Skript, das Folgendes geschrieben hat, an die Stelle Ihres eigenen Makros.
def a1():
doc = XSCRIPTCONTEXT.getDocument()
sheet = doc.getSheets().getByName('Sheet1')
A1 = sheet.getCellRangeByName('A1')
A1.Value = 100
Führen Sie Tools-> Makro-> Makros verwalten-> Python-> Anwendbares Skript-> a1 aus. Nach A1 Enthält 100.
Da das Debuggen mit Makros schwierig ist, ermöglichen wir die Verwendung von Python-Skripten von außen. Derzeit kann Windows effektiv nur die Python verwenden, die mit LibreOffice geliefert wird. Die Situation scheint auf Mac und Ubuntu dieselbe zu sein. Mit anderen Worten, es ist ziemlich unpraktisch, weil Sie keine Module frei hinzufügen können **.
** (Vorbereitung) ** --python verwendet den LibreOffice-Anhang (steht nicht in Konflikt mit anderen Pythons)
(Anlaufen) Beginnen Sie mit einem Stapelbefehl (bitte benennen Sie ihn frei) mit den unten gezeigten Optionen. Beachten Sie, dass es zwei Zeilen gibt. Das DOS-Fenster bleibt geöffnet. Es ist besser, daraus einen Service zu machen, aber vorerst ist dies der richtige Weg. Klicken Sie nach dem Start ** einmal auf das Blatt. ** Die Ursache ist unbekannt, funktioniert jedoch nur, wenn Sie einmal darauf klicken.
"C:\Program Files (x86)\LibreOffice 5\program\soffice.exe" ^
--calc --norestore --accept=socket,host=localhost,port=8100;urp
Das Folgende ist dasselbe wie das Makro. Da es mit libreoffice geliefert wird, wird uno importiert Du solltest dazu fähig sein. Es wird davon ausgegangen, dass eine neue Berechnung geöffnet ist. Zugriff auf das aktuelle Dokument Das Folgende ist der gleiche Inhalt wie das Makro. Vorher gibt es noch einige Teile, die ich nicht verstehe. Führen Sie es mit dem Python-Skriptnamen aus (Sie können ihn auch gerne benennen).
# -*- coding: utf-8 -*-
import uno
localContext = uno.getComponentContext()
resolver = localContext.ServiceManager.createInstanceWithContext(
"com.sun.star.bridge.UnoUrlResolver", localContext)
#connect to the running office
ctx = resolver.resolve( "uno:socket,host=localhost,port=8100;urp;StarOffice.ComponentContext" )
smgr = ctx.ServiceManager
# get the central desktop object
desktop = smgr.createInstanceWithContext( "com.sun.star.frame.Desktop",ctx)
# access the current document ( calc )
doc = desktop.getCurrentComponent()
sheet = doc.getSheets().getByName('Sheet1')
A1 = sheet.getCellRangeByName('A1')
A1.Value = 999
Entwicklung ist besser als Makros allein, da Makros und die Außenwelt jetzt dasselbe tun können. Obwohl es extern ist, ist es unpraktisch, weil Sie Pip oder Ipython nicht verwenden können, weil Sie (im Moment) den libreoffice-Anhang verwenden müssen.
Recommended Posts