3 votos

Crear 128 códigos de barras en Excel

¿Hay alguna manera de crear códigos de barras (128 estándar) en un Mac, preferiblemente a través de un complemento?

Lo necesito para crear códigos de barras en hojas de Excel (o más bien lo necesita un amigo mío).

He probado todas las macros VBA y fuentes que he encontrado en Google, pero ninguna me da un resultado escaneable (normalmente hay caracteres raros como ó's mezclados). ¿Alguien tiene una solución que funcione?

0voto

Manrico Corazzi Puntos 6458

Puede probar la fuente de código de barras gratuita descargada desde aquí: http://www.barcodelink.net/barcode-font.php e instalarlo en /Library/Fonts .

Para utilizarla, sólo tiene que elegir la fuente** en cualquier aplicación que desee, incluido Excel.

El código de barras deberá tener un tamaño de letra mayor que el resto de las celdas, pero puede probarlo usted mismo, tal vez sea "suficientemente bueno" para usted.

No es la mejor solución, pero es gratis. Como alternativa, puedes comprar una solución; una búsqueda en, por ejemplo, Google, te dará algunos resultados.

** Está mostrando un icono de código de barras, y no el nombre, pero se encuentra en la C porque el nombre de la fuente es code128.ttf

0voto

jer-el Puntos 181

Así es como lo hago:

La columna A es el texto que quiero codificar.

La columna B es una fórmula para envolver ese texto en asteriscos (que es lo que, para mí, califica la entrada como texto): =CONCATENATE("*",A2,"*")

El texto de la columna B está formateado con la fuente del código de barras, con el tamaño ajustado para su legibilidad, impresión y escaneo.

Espero que esto ayude de alguna manera.

ADDENDUM

Encontré el siguiente macro , cuyo autor es Eric Townsend Schmidt. Todo el mérito es suyo.

 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
      Loop
      'Calculation of the checksum
      For i% = 1 To Len(code128$)
        dummy% = Asc(Mid$(code128$, i%, 1))
        dummy% = IIf(dummy% < 127, dummy% - 32, dummy% - 100)
        If i% = 1 Then checksum& = dummy%
        checksum& = (checksum& + (i% - 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$ = code128$ & Chr$(checksum&) & Chr$(206)
    End If
  End If
  Exit Function
testnum:
  'if the mini% characters from i% are numeric, then mini%=0
  mini% = mini% - 1
  If i% + mini% <= Len(chaine$) Then
    Do While mini% >= 0
      If Asc(Mid$(chaine$, i% + mini%, 1)) < 48 Or Asc(Mid$(chaine$, i% + mini%, 1)) > 57 Then Exit Do
      mini% = mini% - 1
    Loop
  End If
Return
End Function

0voto

Kevin Grabher Puntos 2556

Obtuve las fuentes de Automatización de la identificación Curiosamente sus VBA scripts sólo parecen funcionar con su propia fuente.

Otra solución (más barata pero más complicada, vía AppleScript) que le funciona a un amigo mío se ofrece aquí: Investigación sobre el escorpión

Gracias a todos por ayudar.

0voto

Karl Guertin Puntos 2206

Gracias Jer-el por los apoyos.

Es cierto que no se puede simplemente descargar una fuente de código de barras y convertir una columna de datos en códigos de barras escaneables. La macro mencionada anteriormente hace el truco muy bien. La estoy moviendo a http://etownsendschmidt.com/barcode-generator/3/free-barcode-generator-for-excel

La macro simplemente mira los datos en 1 columna y los convierte en los símbolos, números y letras que corresponden a la fuente encontrada en dafont.com en otra columna. He ocultado esa columna en el archivo para evitar la manipulación accidental.

La columna final es una copia de esa columna oculta con la fuente cambiada a la fuente del código de barras. Haz clic y arrastra y ya está. Tuve que codificar rápidamente 3000 artículos sin presupuesto. Para ser completamente honesto, encontré el código original que no funcionaba en un sitio web francés tipo Geocities y no funcionaba desde que el estándar para el código128 cambió. Después de arreglarlo, lo probé con el escáner de código de barras de mi iPhone y ¡SHAZAM! Lloré un poco...

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X