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.
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).
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í:
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í
Valora este artículo










