Crear códigos de barra en LibreOffice

Crear códigos de barra en LibreOffice Calc

Con ayuda de la librería IDAutomationVB.bas, y la fuente Code 128, podemos crear códigos de barra en LibreOffice Calc, con el estándar GS1-128, llamado antes EAN 128.

Pasos para crear códigos de barra en LibreOffice Calc


1- Descargamos la macro IDAutomationVB.bas desde la página del autor.

2- Descargamos la fuente desde https://www.dafont.com/es/code-128.font

3- Procedemos a instalar la fuente Code 128.

4- Abrimos LibreOffice Calc, guardamos el documento, podemos llamarlo Barras.ods. Luego vamos al menú Herramientas → Macros → Organizar macros → Basic…

5- Entonces, creamos un nuevo módulo, y le podemos llamar code128 (lo que queramos).

6- Luego, vamos la menú Herramientas → Macros → Editar macros, seleccionamos nuestro modulo code128 y colocamos el cursor fuera del procedimiento Sub Main (asegurémonos que el select de librerías esté ubicado en tu archivo)

7- Justo aquí, vamos al menú Archivo → Importar BASIC, y podemos ver el código de la macro

Ya quedó instalada la macro. Ahora lo comprobamos escribiendo algún dato en cualquier celda, por ejemplo ABC-abc-124, y en otra llamamos a la función CODE128(celda,0,0) apuntando a la cela que usamos de prueba. Luego, formateamos esta celda con la fuente Code 128.

Crear códigos de barra en LibreOffice Calc

Crear códigos de barra en LibreOffice Calc

Y ahí lo tenemos. Podemos verificar el buen funcionamiento de la macro comparando el código de barra que genera, con el que genera la página https://barcode.tec-it.com/en/?data=ABC-abc-1234, deben ser idénticos.

Seguramente cuando volvamos a abrir este archivo, LibreOffice nos informara que ha bloqueado la macro por seguridad, entonces habilitamos la ejecución de macros desde la opción de Seguridad del Menú de Herramientas → Opciones.

Imprimir celda como página en LibreOffice Calc


Digamos que necesitamos imprimir varias etiquetas con códigos de barras generados con el método que acabamos de ver. Las etiquetas tienen una dimensión de 9cmx6cm. Además, esos códigos de barras deben tener encima su información en caracteres legibles para nosotros.

El método que muestro en este post puede ser una opción para lograr dicho propósito, solo en caso de que la información sea de la misma longitud en cada impresión de las etiqueta.

Una forma práctica para imprimir cada celda como página, es formateando las celdas para que tomen el mismo tamaño la etiqueta. Hacemos lo mismo con el tamaño de la hoja (también le desactivamos el encabezado y el pie de página). Para mayor facilidad de manejo, el paginado lo ponemos en orientación horizontal.

Ahora resulta que no podemos colocar el texto legible junto con código de barra en la misma celda. Para solucionarlo, dividimos la página en dos celdas: 1 para el texto y la otra para el código de barra (puede ser 1,5 cms para el uno, y 4.5 para el otro, para 6).

Crear códigos de barra en LibreOffice Calc

Finalmente seleccionamos las filas que vamos a imprimir, y le especificamos a LibreOffice que imprima las celdas seleccionadas.

Otra forma de generar códigos de barra, en este caso CODE128, es por medio de esta macro y con el mismo font Code128:

Function ENCODE128(cadena As String) As String
Dim i As Integer, checksum As Long, mini As Integer, dummy As Integer
Dim tableB As Boolean, codeChar As Integer
Dim result As String, charCode As Integer

If Len(cadena) = 0 Then
ENCODE128 = ""
Exit Function
End If

' Validar caracteres ASCII
For i = 1 To Len(cadena)
charCode = Asc(Mid(cadena, i, 1))
If charCode < 32 Or charCode > 126 Then
ENCODE128 = "#ERROR_ASCII#"
Exit Function
End If
Next i

checksum = 104 ' Start B
result = Chr(204) ' Carácter Start B (Code 128)

For i = 1 To Len(cadena)
charCode = Asc(Mid(cadena, i, 1))
codeChar = charCode - 32
checksum = checksum + (codeChar * i)

If charCode = 32 Then
result = result & Chr(194) ' Espacio mapeado para fuentes Code128
Else
result = result & Mid(cadena, i, 1)
End If
Next i

' Calcular Checksum módulo 103
checksum = checksum Mod 103

' Carácter de Checksum
If checksum < 95 Then
result = result & Chr(checksum + 32)
Else
result = result & Chr(checksum + 100)
End If

' Carácter Stop (206 / ASCII 150)
result = result & Chr(206)

ENCODE128 = result
End Function

Entonces instalamos esta macro dentro de Calc, así:

play-sharp-fill

Tocar usar macros porque simplemente aplicando la tipografía al texto plano no funciona la lectura del código de barra con un escaner. El Code 128 requiere obligatoriamente un carácter de inicio (Start), un dígito de verificación (Checksum) y un carácter de parada (Stop) codificados dentro de la misma cadena antes de cambiar la fuente. Sin esa estructura matemática, el escáner ignora las barras.

Convertir columnas a filas en LibreOffice Calc


Como hemos orientado el paginado en dirección horizontal, acontece que la información que necesitamos imprimir en código de barras, está ordenada por columna, y son 800 registros.

Eso no representa ningún problema para nosotros, la opción más rápida es convertir columna a fila. Entonces, copiamos los 800 registros, y los pegamos en la fila que necesitamos con la función Trasponer del método de pegado especial.

 

Y eso esto.

     Puedes ver más sobre LibreOffice Calc aquí    

Mis apuntes de LibreOffice Calc 7


Valora este artículo

Crear códigos de barra en LibreOffice Calc
5,0 rating based on 12.345 ratings
Overall rating: 5 out of 5 based on 1 reviews.
Nombres
Email
Titulo
Calificanos
Contenido

todo ok

★★★★★
“ Muy bien, funciona perfecto.”
- Diego Armando Hoyos
Comparte esto en
Publicado en Ofimática.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *