Genera fácilmente códigos de barras Code 128 en Excel

Genera fácilmente códigos de barras Code 128 en Excel

Con esta simple metodología puedes generar fácilmente y de manera fiable los códigos de barras CODE 128 utilizando Excel de Microsoft Office.

Existen muchas metodologías publicadas en línea para generar códigos de barras Code 128 en Excel. Desafortunadamente, la mayoría de ellas son complicadas o no funcionan en las versiones posteriores de Excel que la mayoría de la gente usa hoy en día.

Lo primero es explicar que Code 128 es un código de barras de alta densidad, usado ampliamente en logística y paquetería. Puede codificar caracteres alfanuméricos o solo numéricos. Con este código es posible representar todos los caracteres de la tabla ASCII, incluyendo los caracteres de control. Para más informacion visita barcodeisland.

Usa esta simple metodología para generar fácilmente y de manera fiable los códigos de barras CODE 128 con Excel.

Un código de barras Código 128 tiene seis secciones:

  • 1. Zona tranquila. Al principio a la izquierda, que debería tener la longitud de dos caracteres.
  • 2. Carácter inicial ó carácter de inicio
  • 3. Datos codificados. Un número variable de caracteres ASCII y que es propiamente el código
  • 4. Carácter de verificación. Un dígito para checkear la integridad de los datos.
  • 5. Detener el carácter. Un carácter de fin o "Stop character".
  • 6. Zona tranquila. Al final a la derecha, igual que al principio de dos caracteres.

El carácter de verificación se calcula a partir de una suma ponderada (módulo 103) de todos los caracteres. Debido a esto, la generación de códigos de barras Código 128 no es tan simple como escribir la secuencia numérica en un programa utilizando una fuente de código de barras. Si intentas hacerlo así con los códigos de barras del Código 128 te saldrá mal.

Debido a que recientemente tuve motivos para generar códigos de barras Código 128, sentí que sería valioso publicar mi metodología, que se basa en el trabajo de otras personas. Siga estos pasos para crear tu propio generador de código de barras Code 128 en Excel:

PASO UNO

Descargue el archivo de la fuente del código de barras Code 128 e instálela en su carpeta de fuentes en c:\windows\fonts (Necesitará permisos de administrador para hacerlo).

PASO DOS

Asegúrese de que tiene la pestaña de programador habilitada en Excel. Si no es así, habilítela siguiendo estas instrucciones.

PASO TRES

Abre Microsoft Excel con una hoja en blanco. Crea una tabla, asegurándose de que "tiene formato de tabla", con la siguiente estructura y encabezados: (Si no sabes hacerlo sigue estas instrucciones)

paso03

PASO CUATRO

En Excel, vaya a la pestaña de Programador de la cinta de opciones y seleccione "Visual Basic".

paso04

PASO CINCO

Haga clic en la pestaña de Insertar del menú de Visual Basic y después seleccione "Módulo". O bien, en la cinta de opciones despliegue el submenú de Insertar y seleccione "Insertar módulo".

paso05

Ahora pegue el siguiente código, que fue escrito por Philip Treacy:


Option Explicit
Public Function Code128(SourceString As String)
    'Written by Philip Treacy, Feb 2014
    'http://www.myonlinetraininghub.com/create-barcodes-with-excel-vba
    'This code is not guaranteed to be error free.  No warranty is implied or expressed. Use at your own risk and carry out your own testing
    'This function is governed by the GNU Lesser General Public License (GNU LGPL) Ver 3
    'Input Parameters : A string
    'Return : 1. An encoded string which produces a bar code when dispayed using the CODE128.TTF font
    '         2. An empty string if the input parameter contains invalid characters
    Dim Counter As Integer
    Dim CheckSum As Long
    Dim mini As Integer
    Dim dummy As Integer
    Dim UseTableB As Boolean
    Dim Code128_Barcode As String
    If Len(SourceString) > 0 Then
        'Check for valid characters
        For Counter = 1 To Len(SourceString)
            Select Case Asc(Mid(SourceString, Counter, 1))
                Case 32 To 126, 203
                Case Else
                    MsgBox "Invalid character in barcode string." & vbCrLf & vbCrLf & "Please only use standard ASCII characters", vbCritical
                    Code128 = ""
                    Exit Function
            End Select
        Next
        Code128_Barcode = ""
        UseTableB = True
        Counter = 1
        Do While Counter <= Len(SourceString)
            If UseTableB Then
                'Check if we can switch to Table C
                mini = IIf(Counter = 1 Or Counter + 3 = Len(SourceString), 4, 6)
                GoSub testnum
                If mini% < 0 Then 'Use Table C
                    If Counter = 1 Then
                        Code128_Barcode = Chr(205)
                    Else 'Switch to table C
                        Code128_Barcode = Code128_Barcode & Chr(199)
                    End If
                    UseTableB = False
                Else
                    If Counter = 1 Then Code128_Barcode = Chr(204) 'Starting with table B
                End If
            End If
            If Not UseTableB Then
                'We are using Table C, try to process 2 digits
                mini% = 2
                GoSub testnum
                If mini% < 0 Then 'OK for 2 digits, process it
                    dummy% = Val(Mid(SourceString, Counter, 2))
                    dummy% = IIf(dummy% < 95, dummy% + 32, dummy% + 100)
                    Code128_Barcode = Code128_Barcode & Chr(dummy%)
                    Counter = Counter + 2
                Else 'We haven't got 2 digits, switch to Table B
                    Code128_Barcode = Code128_Barcode & Chr(200)
                    UseTableB = True
                End If
            End If
            If UseTableB Then
                'Process 1 digit with table B
                Code128_Barcode = Code128_Barcode & Mid(SourceString, Counter, 1)
                Counter = Counter + 1
            End If
        Loop
        'Calculation of the checksum
        For Counter = 1 To Len(Code128_Barcode)
            dummy% = Asc(Mid(Code128_Barcode, Counter, 1))
            dummy% = IIf(dummy% < 127, dummy% - 32, dummy% - 100)
            If Counter = 1 Then CheckSum& = dummy%
            CheckSum& = (CheckSum& + (Counter - 1) * dummy%) Mod 103
        Next
        'Calculation of the checksum ASCII code
        CheckSum& = IIf(CheckSum& < 95, CheckSum& + 32, CheckSum& + 100)
        'Add the checksum and the STOP
        Code128_Barcode = Code128_Barcode & Chr(CheckSum&) & Chr$(206)
    End If
    Code128 = Code128_Barcode
    Exit Function
testnum:
        'if the mini% characters from Counter are numeric, then mini%=0
        mini% = mini% - 1
        If Counter + mini% <= Len(SourceString) Then
            Do While mini% >= 0
                If Asc(Mid(SourceString, Counter + mini%, 1)) < 48 Or Asc(Mid(SourceString, Counter + mini%, 1)) > 57 Then Exit Do
                mini% = mini% - 1
            Loop
        End If
        Return
End Function

Guarde el módulo y cierre Visual Basic

PASO SEIS

Regrese a su hoja de Excel e inserte las siguientes fórmulas:

  • En la celda B2 (“Barcode String”), la fórmula: =code128([@Barcode])
  • En la celda C2 (“Barcode Presentation”), la fórmula: =[@[Barcode String]]
  • En la celda D2 (“Check”), inserte: SI(ESNUMERO(BUSCAR("Â";[@[Barcode Presentation]];1));"Error!!";"OK")

PASO SIETE

Realiza copia hacia abajo de las tres fórmulas en las mismas columnas.

Selecciona el rango de celdas de la columna C excepto el título "Barcode Presentation" y cambie a la fuente a "Code 128". Ahora, cuando insertas datos en la celda A2, se debe mostrar un código de barras en la celda C2 y así sucesivamente en toda la tabla.

Ajusta el alto de las filas y el ancho de las columnas, así como el tamaño de fuente "code 128" para poder visualizar mejor los códigos de barras. Guarda el libro Excel.

Si esto no funciona, es posible que deba cerrar y volver a abrir Excel en esta etapa.

# CONSIDERACIONES

Desafortunadamente, este script no es perfecto y, a veces, se muestran caracteres extraños en el medio del código de barras, particularmente si se copian números de otras fuentes.

La fórmula en la columna D está diseñada para mostrar "Error!!". Esto ocurre para alertar al operador. Agregué formato condicional con una regla para resaltar las celdas.

consideracion

Normalmente, se soluciona simplemente con un "copia y pega" otra vez del valor sin formato en la misma celda, o volver a escribir el código. Este error no suele suceder a menudo.

# APLICACIÓN PRÁCTICA

etiquetaMe surgió la necesidad de crear esta herramienta a petición de LUBERALBA, una empresa textil de Balazote, para confeccionar las etiquetas adhesivas de sus prendas, en las que figura el código de barras CODE 128 para identificar a las mismas.

También la utilizo en CORREOS, a la hora de transformar los códigos de los envíos registrados en códigos de barras CODE 128 que pueden leer la PDA o la pistola para completar los campos de los formularios del SGIE. En ocasiones, me facilita enormemente el trabajo disponer de esta utilidad.

Comments (12)

  • pere

    pere

    08 Julio 2021 at 12:18 | #

    Hola,
    gracias por este código maravilloso. El lector no me reconoce los códigos que tienen 00 porque el programa genera un espacio en el código de barras. Para corregirlo, he modificado el código:

    dummy% = IIf(dummy% < 95, dummy% + 32, dummy% + 100)

    por

    dummy% = IIf(dummy% < 95, dummy% + 32, dummy% + 100)
    dummy% = IIf(dummy% = 32, 194, dummy%) ' Hace que el espacio pase a ser un Â

    Gracias y un saludo

    reply

    • Armando

      Armando

      03 Noviembre 2021 at 18:24 | #

      Buen día, utilicé este código y todo bien, inserté las líneas de código que pones en tu comentario, el problema me surgió cuando un código lleva 000 o mas, como dicen arriba, el codigo no es perfecto y no estoy en capacidad de mejorarlo, solo probarlo, te agradezco de antemano.

      reply

  • Fernando

    Fernando

    22 Mayo 2021 at 11:36 | #

    Muchas gracias, va perfectamente.
    Le he metido tres datos al ean 128 artículo, lote y fecha caducidad, artículo me lo lee bien, pero lote y fecha me los junta. Tengo que meter algún dígito de separación entre dichos campos??

    reply

  • Angel

    Angel

    27 Marzo 2021 at 06:42 | #

    Mil gracias !!
    Llevaba tiempo intentanto implementar esta función, siguiendo las explicaciones me ha resultado facilisimo.
    Muy buenos aportes, todos ellos.
    Un saludo !!

    reply

  • damian

    damian

    27 Febrero 2021 at 15:52 | #

    Hola! estoy intentando agregarle caracteres de control, pero no me los codigifica correctamente, en mi caso por el sistema que quiero utlizar, necesito darle "3 Enter" en total, yo le agrego \n\n\n pero no funciona. Como deberia hacer?

    reply

    • Super User

      Super User

      02 Marzo 2021 at 19:20 | #

      Revisa desde el principio todo el proceso y el método que has utilizado. Si has seguido escrupulosamente mi metodología no habría ningún problema en agregar caracteres de control como \ ( [ en la fórmula de barcode y que genera tú código de barras. Yo no puedo evaluar tu hoja de calculo a ciegas. Empieza desde cero otra vez. En informática decimos que "los programas hacen lo que tú les ordenas que hagan, no lo que tú quieres que hagan". No desesperes y reinténtalo. Haz grande tu resilencia.

      reply

  • Mario H. Ritossa

    Mario H. Ritossa

    23 Octubre 2020 at 13:10 | #

    Muchas gracias, funcionó perfecto.
    Me encuentro con el siguiente problema, para ingresar el código en la columna A uso la siguiente función,=SI(F8>1;CONCATENAR(F8;F9);""), que toma datos de dos celdas distintas y los une.
    Como se podría solucionar esto, si es que se puede y tiene algun costo, espero tu respuesta.
    Saludos,
    Mario H. Ritossa
    R. Argentina

    reply

    • Super User

      Super User

      11 Noviembre 2020 at 08:52 | #

      No debe haber ningún problema en usar funciones para obtener el "BARCODE" en la columna A. Pero te aconsejo que utilices formulas y funciones en otra hoja y el resultado lo enlaces con formato de texto en la columna A para obtener el código.

      reply

  • javier

    javier

    20 Abril 2020 at 16:29 | #

    Buenas tardes me salen dos recuadros grandes a cada lado del codigo (al principio y al final) lo que lo hace ilegible por la PDA, me podéis decir como lo soluciono?
    Parece como una limitación, para que no pueda ver el código entero
    Gracias

    reply

    • Super User

      Super User

      11 Mayo 2020 at 17:28 | #

      Repasa si has digitalizado bien el código en la columna de barcode de la tabla, y las fórmulas están bien copiadas. Si es así, en la columna de checkeo tiene que estar ok

      reply

  • Marco Rdz

    Marco Rdz

    25 Marzo 2020 at 23:50 | #

    Gracias funciono correctamente; estuve buscando y muchas paginas y ninguna me lo resolvió como esta.

    reply

    • Super User

      Super User

      03 Abril 2020 at 15:26 | #

      Gracias a ti Marco Rdz por visitar mi página y confiar en ella. Espero que le saques partido a la plantilla.

      reply

Deja tu comentario

Estás comentando como invitado.
  • Esta dirección de correo electrónico está siendo protegida contra los robots de spam. Necesita tener JavaScript habilitado para poder verlo.


Construido por Eduardo Velasco 2021 ®
Icon made by Freepik from www.flaticon.com is licensed by CC 3.0 BY