¿Hay alguna manera de crear códigos de barras (estándar 128) en una Mac, preferiblemente a través de un complemento?
Lo necesito para crear códigos de barras en hojas de Excel (o más aún, un amigo mío lo necesita).
Probé todas las macros y fuentes de VBA que encontré en Google, pero ninguna me dio un resultado escaneable (generalmente hay caracteres extraños como ó mezclados). ¿Alguien tiene una solución que funcione?
Puede probar la fuente de código de barras gratuita descargada desde aquí: http://www.barcodelink.net/barcode-font.php e instalarla en /Library/Fonts
.
Para usarlo, simplemente elija la fuente** en cualquier aplicación que desee, incluido Excel.
El código de barras deberá estar correctamente en un tamaño de fuente más grande 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. Alternativamente, puede comprar una solución: una búsqueda en, por ejemplo, Google le dará algunos resultados.
** Muestra un icono de código de barras, y no el nombre, pero está ubicado en las C porque el nombre de la fuente es code128.ttf
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 en la columna B está formateado con la fuente del código de barras, con el tamaño ajustado para legibilidad, impresión y escaneo.
Espero que eso ayude de alguna manera.
APÉNDICE
Encontré la siguiente macro , escrita por Eric Townsend Schmidt. Todo el crédito es para él.
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
Obtuve las fuentes de la automatización de ID. Curiosamente, sus scripts VBA solo parecen funcionar con su propia fuente.
Otra solución (más barata pero más complicada, a través de AppleScript) que funciona para un amigo mío se ofrece aquí: Scorpion Research
Gracias a todos por ayudar.
Gracias Jer-el por los accesorios.
Es cierto que no puede simplemente descargar una fuente de código de barras y convertir una columna de datos en códigos de barras escaneables. La macro listada arriba hace el truco muy bien. Lo muevo 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 que se encuentra en dafont.com en otra columna. Oculté esa columna en el archivo para evitar manipulaciones accidentales.
La columna final es una copia de esa columna oculta con la fuente cambiada por la fuente del código de barras. Haz clic y arrastra y listo. Tuve que codificar 3000 artículos rápidamente sin presupuesto. Para ser completamente honesto, encontré el código original que no funcionaba en un sitio web francés de geocities-esque y no funcionaba desde que cambió el estándar para el código 128. Después de arreglarlo, lo probé con el escáner de código de barras de mi iPhone y ¡SHAZAM! llore un poco...
sin ladera
kevin grabher
sin ladera
Vic