Skip to main content

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.

No video selected.