filmov
tv
Штрихкод в Excel Code 128

Показать описание
Штрихкод Code 128
Я конечно заподозрил, что здесь чтото не чисто и проверил.
Проверка и дальнейший разбор подтвердил, что не чисто там всё.
Как оказалось штрихкоду недостаточно выглядеть, как штрих-код. Ему помимо кодируемой информации оказывается нужен еще и стартовый символ, контрольный ключ и закрывающий символ.
Все мануалы ведут на формирование каких-то картинок методом родов ежа, либо вовсе являются платными и тоже выдают картинки.
Был момент слабости и мысль "взять и забить" но нет.
И, спустя 1000 нецензурных слов, десятка чашек кофе и 12 часов времени мне таки удалось победить этого страшного дракона.
Функция заняла всего 8 строчек кода.
'Замените надпись "больше или равно" на соответствующие символы.
Отдельное СПАСИБО пользователю Александр (он в закрепленном комментарии) за зоркий глаз, светлый ум и внесенные корректировки.
Function Code128(Str As String)
cs = 104
For i = 1 To Len(Str)
s = Asc(Mid(Str, i, 1))
cs = cs + (s + IIf(s БОЛЬШЕ= 32, -32, 64)) * i
Next i
sh = cs Mod 103
sh = sh + IIf(sh БОЛЬШЕ 94, 100, 32)
Code128 = ChrW(204) & Str & ChrW(sh) & ChrW(206)
End Function
Я конечно заподозрил, что здесь чтото не чисто и проверил.
Проверка и дальнейший разбор подтвердил, что не чисто там всё.
Как оказалось штрихкоду недостаточно выглядеть, как штрих-код. Ему помимо кодируемой информации оказывается нужен еще и стартовый символ, контрольный ключ и закрывающий символ.
Все мануалы ведут на формирование каких-то картинок методом родов ежа, либо вовсе являются платными и тоже выдают картинки.
Был момент слабости и мысль "взять и забить" но нет.
И, спустя 1000 нецензурных слов, десятка чашек кофе и 12 часов времени мне таки удалось победить этого страшного дракона.
Функция заняла всего 8 строчек кода.
'Замените надпись "больше или равно" на соответствующие символы.
Отдельное СПАСИБО пользователю Александр (он в закрепленном комментарии) за зоркий глаз, светлый ум и внесенные корректировки.
Function Code128(Str As String)
cs = 104
For i = 1 To Len(Str)
s = Asc(Mid(Str, i, 1))
cs = cs + (s + IIf(s БОЛЬШЕ= 32, -32, 64)) * i
Next i
sh = cs Mod 103
sh = sh + IIf(sh БОЛЬШЕ 94, 100, 32)
Code128 = ChrW(204) & Str & ChrW(sh) & ChrW(206)
End Function
Комментарии