Neu in LibreOffice 6.4 war, dass ein Struct für einen Barcode dabei ist. Ich erzeuge hier zuerst über Einfügen → Object → QR- und Barcode
einen QRCode. Anschließend benenne ich unter “Zeichnungsobjeke” das Object mit ‘QRCode’.
Mit dem folgenden Makro schaffe ich es, neuen Inhalt für den Code zu erzeugen:
SUB QRCode_aendern
oDraw = ThisComponent.DrawPage
FOR i = 0 TO oDraw.count - 1
IF oDraw.getByIndex(i).Name = "QRCode" THEN
unoBarcode = createUnoStruct("com.sun.star.drawing.BarCode")
unoBarcode.Type = 0
unoBarcode.Payload = "https://de.libreoffice.org"
unoBarcode.ErrorCorrection = 2
unoBarcode.Border = 1
oDraw.getByIndex(i).BarCodeProperties = unoBarcode
oDocControl = ThisComponent.CurrentController
oDocControl.select(oDraw.getByIndex(i))
oDocFrame = oDocControl.Frame
oDispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
oDispatcher.executeDispatch(oDocFrame, ".uno:EditQrCode", "", 0, Array())
END IF
NEXT
END SUB
Leider verändert sich nicht das Erscheinungsbild des QR-Codes. Deshalb muss ich den Code auswählen, den QR- und Bacode
Dialog starten und dann mit OK bestätigen. Nicht schön, weil natürlich mit Benutzereingabe …
Ich habe bisher nach so etwas wie refresh() oder reload() gesucht, aber nicht gefunden. Kann sein, dass so etwas zur Zeit mit dem eingebuten QRCode-Generator nicht möglich ist: Bug 128779. Siehe auch: Users-Mailingliste September 2020, QR-Code per Makro…
Und wie so oft: Ich brauche das nicht selbst, ich hätte das nur gerne für das Base-Handbuch als Feld in einem Serienbrief, das dann eben über die Datenbank mit Inhalt versorgt werden kann.
Gruß
Robert