Newsgroup: it.comp.os.linux.iniziare
Titolo: barcode su libreoffice

Dunque io vorrei creare barcode nel seguente modo Cella A2:pippo, cella 
A3: =code123(A2) cui assegno poi dei font code123 et voilà il barcode. 
Solo che deve funzionare la macro code123.
Ne ho trovate alcune su internet ma tutte deludenti. La prima domanda è 
se qualcuno ha trovato qualcosa che funziona non a pagamento.
  Poi avevo sottomano una macro per office dove funziona che mi sembra 
opensurce ma è in visual basic , al codice ho anteposto le seguenti righe :
Rem Attribute VBA_ModuleType=VBAModule
Option VBASupport 1
 
il risultato è stato discreto, fa qualcosa su libreoffice, ma dà degli 
errori e il barcode viene parziale.
 
Quindi vi lascio il codice magari qualcuno è in grado di correggerlo per 
libreoffice, lo spero:
 
 
Public Function code128$(chaine$)
   'This function is governed by the GNU Lesser General Public License 
(GNU LGPL)
   'V 2.0.0
   'Parameters : a string
   'Return : * a string which give the bar code when it is dispayed with 
CODE128.TTF font
   '         * an empty string if the supplied parameter is no good
   Dim i%, checksum&, mini%, dummy%, tableB As Boolean
   code128$ = ""
   If Len(chaine$) > 0 Then
   'Check for valid characters
     For i% = 1 To Len(chaine$)
       Select Case Asc(Mid$(chaine$, i%, 1))
       Case 32 To 126, 203
       Case Else
         i% = 0
         Exit For
       End Select
     Next
     'Calculation of the code string with optimized use of tables B and C
     code128$ = ""
     tableB = True
     If i% > 0 Then
       i% = 1 'i% devient l'index sur la chaine / i% become the string index
       Do While i% <= Len(chaine$)
         If tableB Then
           'See if interesting to switch to table C
           'yes for 4 digits at start or end, else if 6 digits
           mini% = IIf(i% = 1 Or i% + 3 = Len(chaine$), 4, 6)
           GoSub testnum
           If mini% < 0 Then 'Choice of table C
             If i% = 1 Then 'Starting with table C
               code128$ = Chr$(205)
             Else 'Switch to table C
               code128$ = code128$ & Chr$(199)
             End If
             tableB = False
           Else
             If i% = 1 Then code128$ = Chr$(204) 'Starting with table B
           End If
         End If
         If Not tableB Then
           'We are on table C, try to process 2 digits
           mini% = 2
           GoSub testnum
           If mini% < 0 Then 'OK for 2 digits, process it
             dummy% = Val(Mid$(chaine$, i%, 2))
             dummy% = IIf(dummy% < 95, dummy% + 32, dummy% + 100)
             code128$ = code128$ & Chr$(dummy%)
             i% = i% + 2
           Else 'We haven't 2 digits, switch to table B
             code128$ = code128$ & Chr$(200)
             tableB = True
           End If
         End If
         If tableB Then
           'Process 1 digit with table B
           code128$ = code128$ & Mid$(chaine$, i%, 1)
           i% = i% + 1
         End If
 

 se qualcuno ha trovato qualcosa che funziona non a pagamento.
 
Mi aut rispondo: questo è meglio di altri:
https://github.com/BdR76/barcode128.bas/blob/master/readme.md
 
 
 

 errori e il barcode viene parziale.
 
Scusate se sono un po' pedante, ma non voglio indurre in errore chi 
avesse letto: mi sono accorto che anche la macro che avevo io funziona, 
basta non aggiungere le righe che ho aggiunto credendo di far bene " Rem 
Attribute VBA_ModuleType=VBAModule
  Option VBASupport 1" e tutto funziona.
Che era anche più semplice...