Forum: PC Hard- und Software QR-Code aus Zellinhalt in Libre Office Calc


von M.A. S. (mse2)


Lesenswert?

Ich suche eine Möglichkeit, in Libre Office Calc-Tabellen QR-Codes aus 
Zellinhalten zu generieren.

Es gibt in Libre Office einen QR-Code-Generator, der interaktiv Texte 
aufnimmt und daraus einen QR-Code als Bild erzeugt.

Gibt es auch eine Möglichkeit, automatisch QR-Codes aus z.B. allen 
Zellen einer Spalte zu erzeugen?

von Frank E. (Firma: Q3) (qualidat)


Lesenswert?

M.A. S. schrieb:

> Gibt es auch eine Möglichkeit, automatisch QR-Codes aus z.B. allen
> Zellen einer Spalte zu erzeugen?

Im direkten Kontext von Libre-Office wahrscheinlich nicht. Aber du 
kannst doch sicher das Dokument (oder Teile davon) z.B. als CSV-Dstei 
exportieren?

Es gibt zahlreiche Software, die im Stapel aus CSVs Codes erzeigen kann 
...

von roland (Gast)


Lesenswert?


von Helge (Gast)


Lesenswert?

Es scheint für das aktuelle integrierte plugin eine API oder Macro zu 
geben
Gibts es hier eine Möglichkeit Tabelleninhalte auszuwählen?

Sub InsertBarcode
    Dim oJob as Object
    oJob = createUnoService("org.libreoffice.Barcode")

    Dim args(8) as new com.sun.star.beans.NamedValue
    args(0).Name = "Action"
    args(0).Value = "InsertBarcode"
    args(1).Name = "BarcodeType"
    args(1).Value = "CODE128"
    args(2).Name = "BarcodeValue"
    args(2).Value = "123456789"
    args(3).Name = "BarcodeAddChecksum"
    args(3).Value = True
    args(4).Name = "WidthScale"
    args(4).Value = "100"
    args(5).Name = "HeightScale"
    args(5).Value = "100"
    args(6).Name = "PositionX"
    args(6).Value = "1000"
    args(7).Name = "PositionY"
    args(7).Value = "1000"
    args(8).Name = "TargetComponent"
    args(8).Value = ThisComponent
    oJob.execute(args)
End Sub

von René H. (mumpel)


Lesenswert?

Natürlich ist das möglich. Du musst zuerst aus den gewünschten Zellen 
einen String erzeugen und diesen bei "args(2).Value = "123456789"" 
angeben, also anstelle von "123456789" den zusammengesetzen String 
angeben. Vielleicht probiere ich das morgen mal aus. Ich muss mich da 
aber erst wieder reinarbeiten, habe schon lange nicht mehr in Starbasic 
programmiert.

von René H. (mumpel)


Lesenswert?

Bei mir funktioniert der Code nicht, bekomme eine Laufzeitfehler 
(Objektvariable nicht belegt) bei "oJob.execute(args)".

von Helge (Gast)


Lesenswert?

Hast du die neuste Version?
Ich habe es mittlerweile zusammen kopiert bekommen. Habe von den Makros 
keine Ahnung, man bräuchte da ein Schleife für 30 Objekte oder so etc.
In einem Dokument habe ich zwei verschiedene Tabellen/Seiten. in der 
ersten Tabelle stehen die Werte und wenn ich auf die zweite Tabelle gehe 
und das Makro aufrufe, dann tauchen da auch zwei Barcodes auf.

Sub InsertBarcode
    Dim oJob as Object
    oJob = createUnoService("org.libreoffice.Barcode")

    oDoc = ThisComponent   'das Dokumentenobjekt
  oSheet = oDoc.sheets(0)  ' das erste Tabellenblatt Objekt

  oCell = oSheet.getCellRangeByName("a6")  'das Objekt der Zelle A6
  sText = oCell.string     'Textinhalt der Zelle

    Dim args(8) as new com.sun.star.beans.NamedValue
    args(0).Name = "Action"
    args(0).Value = "InsertBarcode"
    args(1).Name = "BarcodeType"
    args(1).Value = "CODE128"
    args(2).Name = "BarcodeValue"
    args(2).Value = sText
    args(3).Name = "BarcodeAddChecksum"
    args(3).Value = True
    args(4).Name = "WidthScale"
    args(4).Value = "100"
    args(5).Name = "HeightScale"
    args(5).Value = "100"
    args(6).Name = "PositionX"
    args(6).Value = "2000"
    args(7).Name = "PositionY"
    args(7).Value = "3000"
    args(8).Name = "TargetComponent"
    args(8).Value = ThisComponent
    oJob.execute(args)

    oCell = oSheet.getCellRangeByName("a7")  'das Objekt der Zelle A6
  sText = oCell.string     'Textinhalt der Zelle

    Dim args_1(8) as new com.sun.star.beans.NamedValue
    args_1(0).Name = "Action"
    args_1(0).Value = "InsertBarcode"
    args_1(1).Name = "BarcodeType"
    args_1(1).Value = "CODE128"
    args_1(2).Name = "BarcodeValue"
    args_1(2).Value = sText
    args_1(3).Name = "BarcodeAddChecksum"
    args_1(3).Value = True
    args_1(4).Name = "WidthScale"
    args_1(4).Value = "10"
    args_1(5).Name = "HeightScale"
    args_1(5).Value = "10"
    args_1(6).Name = "PositionX"
    args_1(6).Value = "2000"
    args_1(7).Name = "PositionY"
    args_1(7).Value = "9000"
    args_1(8).Name = "TargetComponent"
    args_1(8).Value = ThisComponent
    oJob.execute(args_1)


End Sub

von René H. (mumpel)


Lesenswert?

Helge schrieb:
> Hast du die neuste Version?

Habe ich.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.