Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Barcode erzeugen lassen (Code128)

Barcode erzeugen lassen (Code128)
06.03.2013 08:54:27
Richard
Hallo zusammen,
ich habe von einer anderen Seite einen VBA Code verwendet um mir in Excel eine Zahlenfolge in einen Barcode umrechnen zu lassen. Leider ergibt sich bei unseren Zahlenfolgen ein Fehler in der Berechnung.
Gebe ich die Zahl: 141004020022 ein, kann ich den Barcode nicht scannen.
Verwende ich statt dessen: 14100402022 (streiche also eine der hinteren Doppelnullen) ist ein Scannen des Barcodes möglich.
Benutze ich eine andere Variante (die es auch gibt): 141004G01022 kann der Barcode ebenso eingescannt werden. Die Stellenanzahl ist also nicht das Problem, sondern die zweite Doppelnull in der Zahlenfolge. Leider sind meine VBA- Kenntnisse dafür bei weitem nicht ausreichend um selber auf eine Lösung zu kommen und hoffe hier auf Hilfe... :)
Der Code sieht wie folgt aus...
Modul1

Public Function Code128_Str(ByVal Str As String) As String
Dim c As Klasse1
Set c = New Klasse1
Code128_Str = c.Code128_Str(Str)
End Function

Klasse1

' ***    Made By Michael Ciurescu (CVMichael)   ***
'Modified by Paulo Cunha (pcunha) to work with char128.ttf on word or excel on 16/05/2011
'the font at in http://grandzebu.net/index.php?page=/informatique/codbar-en/code128.htm
' References:
' h**p://www.barcodeman.com/info/c128.php3
Private Enum eCode128Type
eCode128_CodeSetA = 1
eCode128_CodeSetB = 2
eCode128_CodeSetC = 3
End Enum
Private Type tCode
ASet As String
BSet As String
CSet As String
BarSpacePattern As String
End Type
Private CodeArr() As tCode
Private Sub Class_Initialize()
ReDim CodeArr(106)
AddEntry 0, " ", " ", "00", Chr(32)
AddEntry 1, "!", "!", "01", Chr(33)
AddEntry 2, """", """", "02", Chr(34)
AddEntry 3, "#", "#", "03", Chr(35)
AddEntry 4, "$", "$", "04", Chr(36)
AddEntry 5, "%", "%", "05", Chr(37)
AddEntry 6, "&", "&", "06", Chr(38)
AddEntry 7, "'", "'", "07", Chr(39)
AddEntry 8, "(", "(", "08", Chr(40)
AddEntry 9, ")", ")", "09", Chr(41)
AddEntry 10, "*", "*", "10", Chr(42)
AddEntry 11, "+", "+", "11", Chr(43)
AddEntry 12, ",", ",", "12", Chr(44)
AddEntry 13, "-", "-", "13", Chr(45)
AddEntry 14, ".", ".", "14", Chr(46)
AddEntry 15, "/", "/", "15", Chr(47)
AddEntry 16, "0", "0", "16", Chr(48)
AddEntry 17, "1", "1", "17", Chr(49)
AddEntry 18, "2", "2", "18", Chr(50)
AddEntry 19, "3", "3", "19", Chr(51)
AddEntry 20, "4", "4", "20", Chr(52)
AddEntry 21, "5", "5", "21", Chr(53)
AddEntry 22, "6", "6", "22", Chr(54)
AddEntry 23, "7", "7", "23", Chr(55)
AddEntry 24, "8", "8", "24", Chr(56)
AddEntry 25, "9", "9", "25", Chr(57)
AddEntry 26, ":", ":", "26", Chr(58)
AddEntry 27, ";", ";", "27", Chr(59)
AddEntry 28, "", ">", "30", Chr(62)
AddEntry 31, "?", "?", "31", Chr(63)
AddEntry 32, "@", "@", "32", Chr(64)
AddEntry 33, "A", "A", "33", Chr(65)
AddEntry 34, "B", "B", "34", Chr(66)
AddEntry 35, "C", "C", "35", Chr(67)
AddEntry 36, "D", "D", "36", Chr(68)
AddEntry 37, "E", "E", "37", Chr(69)
AddEntry 38, "F", "F", "38", Chr(70)
AddEntry 39, "G", "G", "39", Chr(71)
AddEntry 40, "H", "H", "40", Chr(72)
AddEntry 41, "I", "I", "41", Chr(73)
AddEntry 42, "J", "J", "42", Chr(74)
AddEntry 43, "K", "K", "43", Chr(75)
AddEntry 44, "L", "L", "44", Chr(76)
AddEntry 45, "M", "M", "45", Chr(77)
AddEntry 46, "N", "N", "46", Chr(78)
AddEntry 47, "O", "O", "47", Chr(79)
AddEntry 48, "P", "P", "48", Chr(80)
AddEntry 49, "Q", "Q", "49", Chr(81)
AddEntry 50, "R", "R", "50", Chr(82)
AddEntry 51, "S", "S", "51", Chr(83)
AddEntry 52, "T", "T", "52", Chr(84)
AddEntry 53, "U", "U", "53", Chr(85)
AddEntry 54, "V", "V", "54", Chr(86)
AddEntry 55, "W", "W", "55", Chr(87)
AddEntry 56, "X", "X", "56", Chr(88)
AddEntry 57, "Y", "Y", "57", Chr(89)
AddEntry 58, "Z", "Z", "58", Chr(90)
AddEntry 59, "[", "[", "59", Chr(91)
AddEntry 60, "\", "\", "60", Chr(92)
AddEntry 61, "]", "]", "61", Chr(93)
AddEntry 62, "^", "^", "62", Chr(94)
AddEntry 63, "_", "_", "63", Chr(95)
AddEntry 64, Chr(0), "`", "64", Chr(96) ' Null
AddEntry 65, Chr(1), "a", "65", Chr(97) ' SOH
AddEntry 66, Chr(2), "b", "66", Chr(98) ' STX
AddEntry 67, Chr(3), "c", "67", Chr(99) ' ETX
AddEntry 68, Chr(4), "d", "68", Chr(100) ' EOT
AddEntry 69, Chr(5), "e", "69", Chr(101) ' ENQ
AddEntry 70, Chr(6), "f", "70", Chr(102) ' ACK
AddEntry 71, Chr(7), "g", "71", Chr(103) ' BEL
AddEntry 72, Chr(8), "h", "72", Chr(104) ' BS
AddEntry 73, Chr(9), "i", "73", Chr(105) ' HT
AddEntry 74, Chr(10), "j", "74", Chr(106) ' LF
AddEntry 75, Chr(11), "k", "75", Chr(107) ' VT
AddEntry 76, Chr(12), "l", "76", Chr(108) ' FF
AddEntry 77, Chr(13), "m", "77", Chr(109) ' CR
AddEntry 78, Chr(14), "n", "78", Chr(110) ' SO
AddEntry 79, Chr(15), "o", "79", Chr(111) ' SI
AddEntry 80, Chr(16), "p", "80", Chr(112) ' DLE
AddEntry 81, Chr(17), "q", "81", Chr(113) ' DC1
AddEntry 82, Chr(18), "r", "82", Chr(114) ' DC2
AddEntry 83, Chr(19), "s", "83", Chr(115) ' DC3
AddEntry 84, Chr(20), "t", "84", Chr(116) ' DC4
AddEntry 85, Chr(21), "u", "85", Chr(117) ' NAK
AddEntry 86, Chr(22), "v", "86", Chr(118) ' SYN
AddEntry 87, Chr(23), "w", "87", Chr(119) ' ETB
AddEntry 88, Chr(24), "x", "88", Chr(120) ' CAN
AddEntry 89, Chr(25), "y", "89", Chr(121) ' EM
AddEntry 90, Chr(26), "z", "90", Chr(122) ' SUB
AddEntry 91, Chr(27), "{", "91", Chr(123) ' ESC
AddEntry 92, Chr(28), "|", "92", Chr(124) ' FS
AddEntry 93, Chr(29), "}", "93", Chr(125) ' GS
AddEntry 94, Chr(30), "~", "94", Chr(126) ' RS
AddEntry 95, Chr(31), Chr(127), "95", Chr(200) ' US, DEL
AddEntry 96, "FNC 3", "FNC 3", "96", Chr(201)
AddEntry 97, "FNC 2", "FNC 2", "97", Chr(202)
AddEntry 98, "SHIFT", "SHIFT", "98", Chr(203)
AddEntry 99, "CODE C", "CODE C", "99", Chr(204)
AddEntry 100, "CODE B", "FNC 4", "CODE B", Chr(205)
AddEntry 101, "FNC 4", "CODE A", "CODE A", Chr(206)
AddEntry 102, "FNC 1", "FNC 1", "FNC 1", Chr(207)
AddEntry 103, "Start A", "Start A", "Start A", Chr(208)
AddEntry 104, "Start B", "Start B", "Start B", Chr(209)
AddEntry 105, "Start C", "Start C", "Start C", Chr(210)
AddEntry 106, "Stop", "Stop", "Stop", Chr(211)
End Sub
Private Sub AddEntry(ByVal Index As Integer, ASet As String, BSet As String, CSet As String,  _
BarSpacePattern As String)
With CodeArr(Index)
.ASet = ASet
.BSet = BSet
.CSet = CSet
.BarSpacePattern = Replace(BarSpacePattern, " ", "")
End With
End Sub
Public Function Code128_Str(ByVal Str As String)
Code128_Str = Replace(BuildStr(Str), " ", "")
End Function
Private Function BuildStr(ByVal Str As String) As String
Dim SCode As eCode128Type, PrevSCode As eCode128Type
Dim CurrChar As String, ArrIndex As Integer, CharIndex As Long
Dim CheckDigit As Integer, CCodeIndex As Integer, TotalSum As Long
SCode = eCode128_CodeSetB
If Str Like "##*" Then SCode = eCode128_CodeSetC
TotalSum = 0
CharIndex = 1
Select Case SCode
Case eCode128_CodeSetA
TotalSum = TotalSum + (103 * CharIndex)
BuildStr = Trim(BuildStr) & Chr(208)
Case eCode128_CodeSetB
TotalSum = TotalSum + (104 * CharIndex)
BuildStr = Trim(BuildStr) & Chr(209)
Case eCode128_CodeSetC
TotalSum = TotalSum + (105 * CharIndex)
BuildStr = Trim(BuildStr) & Chr(210)
End Select
PrevSCode = SCode
Do Until Len(Str) = 0
If Str Like "####*" Then SCode = eCode128_CodeSetC
If SCode = eCode128_CodeSetC And Mid(Str, 1, 2) Like "##" Then
CurrChar = Mid(Str, 1, 2)
Else
CurrChar = Mid(Str, 1, 1)
End If
ArrIndex = GetCharIndex(CurrChar, SCode, True)
If ArrIndex  -1 Then
If CodeArr(ArrIndex).BSet = CurrChar And ((SCode = eCode128_CodeSetC And CodeArr( _
ArrIndex).CSet  CurrChar) Or (SCode = eCode128_CodeSetA And CodeArr(ArrIndex).ASet   _
CurrChar)) Then
SCode = eCode128_CodeSetB
ElseIf CodeArr(ArrIndex).ASet = CurrChar And CodeArr(ArrIndex).BSet  CurrChar  _
Then
SCode = eCode128_CodeSetA
ElseIf CodeArr(ArrIndex).CSet = CurrChar Then
SCode = eCode128_CodeSetC
End If
If PrevSCode  SCode Then
Select Case SCode
Case eCode128_CodeSetA
CCodeIndex = GetCharIndex("CODE A", PrevSCode, False)
Case eCode128_CodeSetB
CCodeIndex = GetCharIndex("CODE B", PrevSCode, False)
Case eCode128_CodeSetC
CCodeIndex = GetCharIndex("CODE C", PrevSCode, False)
End Select
TotalSum = TotalSum + (CCodeIndex * CharIndex)
BuildStr = Trim(BuildStr) & CodeArr(CCodeIndex).BarSpacePattern
CharIndex = CharIndex + 1
PrevSCode = SCode
End If
BuildStr = Trim(BuildStr) & CodeArr(ArrIndex).BarSpacePattern
TotalSum = TotalSum + (ArrIndex * CharIndex)
CharIndex = CharIndex + 1
End If
If SCode = eCode128_CodeSetC Then
Str = Mid(Str, 3)
Else
Str = Mid(Str, 2)
End If
Loop
CheckDigit = TotalSum Mod 103
BuildStr = Trim(BuildStr) & CodeArr(CheckDigit).BarSpacePattern
BuildStr = Trim(BuildStr) & Chr(211)
End Function
Private Function GetCharIndex(ByVal Char As String, ByVal CodeType As eCode128Type, ByVal  _
Recurse As Boolean) As Integer
Dim K As Long
Select Case CodeType
Case eCode128_CodeSetA
For K = 0 To UBound(CodeArr)
If Char = CodeArr(K).ASet Then Exit For
Next K
Case eCode128_CodeSetB
For K = 0 To UBound(CodeArr)
If Char = CodeArr(K).BSet Then Exit For
Next K
Case eCode128_CodeSetC
For K = 0 To UBound(CodeArr)
If Char = CodeArr(K).CSet Then Exit For
Next K
End Select
If K = UBound(CodeArr) + 1 Then
If Not Recurse Then
GetCharIndex = -1
Else
Select Case CodeType
Case eCode128_CodeSetA
GetCharIndex = GetCharIndex(Char, eCode128_CodeSetC, False)
Case eCode128_CodeSetB
GetCharIndex = GetCharIndex(Char, eCode128_CodeSetA, False)
Case eCode128_CodeSetC
GetCharIndex = GetCharIndex(Char, eCode128_CodeSetB, False)
End Select
If GetCharIndex = -1 Then
Select Case CodeType
Case eCode128_CodeSetA
GetCharIndex = GetCharIndex(Char, eCode128_CodeSetB, False)
Case eCode128_CodeSetB
GetCharIndex = GetCharIndex(Char, eCode128_CodeSetC, False)
Case eCode128_CodeSetC
GetCharIndex = GetCharIndex(Char, eCode128_CodeSetA, False)
End Select
End If
End If
Else
GetCharIndex = K
End If
End Function
Public Function Code128_GetWidth(ByVal Str As String, Optional ByVal BarWidth As Integer = 1)   _
_
As Long
Dim K As Long, Width As Long
Str = Replace(Code128_Str(Str), " ", "")
Debug.Print Str
For K = 1 To Len(Str)
Width = Width + Val(Mid(Str, K, 1))
Next K
Code128_GetWidth = Width * BarWidth + (28 * BarWidth)
End Function
Private Sub Class_Terminate()
End Sub

Anzeige

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Barcode erzeugen lassen (Code128)
06.03.2013 09:43:34
Klaus
Hallo Richard,
deinen Code habe ich mir gar nicht erst angesehen. Um einen 128-er Barcode zu erstellen, schreibe was-auch-immer in eine Zelle und formatiere die Zelle mit der Schriftart "Barcode 128". Fertig. Kein Vba, nix nötig.
"Code 128 font" in google eingeben, falls du die Schriftart nicht hast.
Bei der Gelegenheit, eigentlich jeder Scanner der "128"er lesen kann, liest auch "39"er. Der "39"er ist etwas einfacher. Wenn du nicht gerade um jeden milimeter Barcodefläche kämpfen musst oder eine Lieferantenvorschrift den 128er verlangt, nimm den 39er (Font per Google runterladbar).
Denk daran, dass Barcodes mit * enden und aufhören(1). Möchtest du den Text "herber123" in Barcode ausgeben, muss in der Zelle "*herber123*" stehen.
Grüße,
Klaus M.vdT.
(1): Zumindest war das meiner Erinnerung nach beim 39er so ... ist ein paar Tage her. Google und Wiki helfen bei den Details.

Anzeige
AW: Barcode erzeugen lassen (Code128)
06.03.2013 09:58:09
Richard
Hallo Klaus,
das ist eben mein Problem. Code 128 wird verlangt und ein einfaches ändern der Schriftart funktioniert nicht. In diesem Code steckt eine Anfangs- und eine Endsequenz die sich je nach verwendeten Zahlen/Buchstabenfolgen ändert, eine Berechnung erfordert und was die Verwendung eines Makros unumgänglich macht.
Ich habe erst mit einem Code von dieser Seite: http://grandzebu.net/informatique/codbar/code128.htm gearbeitet, aber leider funktioniert der in unserem Tochterunternehmen in China nicht (schätze das hängt mit der verwendeten Sprachversion von Windows und Office zusammen).
Gruß,
Richard

Anzeige
AW: Barcode erzeugen lassen (Code128)
06.03.2013 10:09:43
Klaus
Hallo,
ok, verstanden. Ich hab leider meinen Barcodescanner grad nicht zur Hand, darum kann ich nichts testen. Bis zum Wochenende hast du warscheinlich keine Zeit.
Dein hochgeladener Code ist bestimmt Teil einer Userform, oder? Ich nehme an, die wenigsten haben Lust deinen Code erst in einer eigenen Datei nachzubauen, und auch nicht alle sind fließend genug in Italienisch um dem Link zu folgen. Wenn du also eine Musterdatei hochlädst, in der bereits Barcodes erstellt werden können, dann ist deine Chance auf Hilfe gleich viel höher.
Ich nehme an, dass die 00 irgendwo einen falschen Zeichensatzwechsel hat.
leider funktioniert der in unserem Tochterunternehmen in China nicht
Ich weiss, in der Realität ist das nicht immer so einfach ... aber wenn der Barcode hier funkioniert, in China aber nicht, dann ist das ein Problem dass in China gelöst werden muss und nicht hier. Die Details der chinesichen Office-Installationen kennen hier nur ganz wenige Leute.
Grüße,
Klaus M.vdT.
(ja, ich besitze privat einen Barcodescanner und beruflich unter der Woche keinen. Ich bin halt ein Nerd)

Anzeige
AW: Barcode erzeugen lassen (Code128)
06.03.2013 10:18:47
Richard
Ok. Hier ist die Datei: https://www.herber.de/bbs/user/84215.xlsm
Eigentlich hast Du Recht wenn Du sagst das es deren Problem ist, aber leider sitzt da niemand der mit Makros überhaupt irgendwas anfangen kann. :(
Meine Hoffnung liegt nun darin, das dieser Code sowohl hier, als auch dort gleich funktioniert und nicht wie der den ich in meiner letzten Antwort erwähnt habe.
Zeit ist normalerweise Geld, aber das wollen wir uns sparen - sonst hätte ich mich schon um eine kommerzielle Variante bemüht. Von daher habe ich auch Zeit... :)
Gruß,
Richy

Anzeige
AW: Barcode erzeugen lassen (Code128)
06.03.2013 10:34:00
Klaus
Hi,
Stell mal die Schriftart in A:A um auf Arial.
A1: Ņ.*$!6qÓ
A2: Ņ.*$!"Ķ2cÓ
Wenn du jetzt in B1 die Zahlen Buchstabe für Buchstabe eingibst, siehst du schön wie der Code sich ändert.
Ich meine, du brauchst aufgrund der Verschlüsselung des 128er von je zwei Zahlen zu einem Codebalkenteil eine gerade Anzahl von Zahlen. Wenn du etwas herumspielst siehst du, dass "Ķ" immer auftaucht wenn die Anzahl Ziffern ungerade ist.
Ich bin jetzt kein 128er Experte (für meine Zwecke hat immer der 39er als Font gereicht) aber vielleicht ist das schon der Ansatz den du brauchst.
Um eine ungerade Anzahl Ziffern zu vermeiden, kannst du vielleicht einfach eine führende 0 voranstellen? Eventuell braucht es dafür ein ' damit Excel die nicht automatisch entfernt.
Wie man den 128er zwingt, zwischen seinen A-B-C Zeichensätzen hin und her zu schalten und so eine ungerade Anzahl von Ziffern zu erlauben kann ich dir leider nicht sagen, find ich auch grad auf die schnelle nicht bei Wiki oder Google.
Prüf mal bitte nach (bzw lass die Chinesen prüfen) ob es wirklich an der 00 liegt oder doch an der Anzahl von Ziffern.
Grüße,
Klaus M.vdT.

Anzeige
AW: Barcode erzeugen lassen (Code128)
06.03.2013 10:48:58
Richard
Die Anzahl der Ziffern ist es leider nicht. Habe das auch schon gedacht, aber den Artikel gibt es in einer Abwandlung auch unter folgender Nummer: 141004G01022
Hier wird der Code richtig generiert und der Barcode lässt sich, wie bei der ungeraden Ganzzahl wo ich die zweite null gelöscht habe, scannen. Es liegt definitiv an der 00.
Gruß,
Richy

Anzeige
AW: Barcode erzeugen lassen (Code128)
06.03.2013 11:36:28
Klaus
141004 ist Ņ.*$PÓ
genau genommen: .*$ ist 141004, der Rest sind Steuerzeichen des Barcodes.
141004G ist Ņ.*$ĶG
ich behaupte jetzt, dass Ķ auf einen anderen Modus umschaltet, weil mit G ein Buchstabe folgt.
Test.
ich wandle 141004G141004 um Ich weiss, 141004 ist .*$ und G ist ĶG.
Meine Erwartungshaltung an den Code ist demnach im Detail:
Ņ = Steuerzeichen
.*$ = 141004
ĶG = G
.*$ = 141004
PÓ = Steuerzeichen
Ņ .*$ ĶG .*$ PÓ
es kommt aber heraus:
Ņ.*$ĶGĢ.*$)Ó
Jetzt denke ich mir, das Ķ auf Buchstabenmodus umschaltet und Ģ zurück auf den Zahlenmodus.
Wenn ich deinen 13 stelligen Code sehe, kommt darin Ķ vor. in deinem 12 ziffrigem Code nicht. Überhaupt, wenn ich vor oder nach einem Ķ eine ungerade Ziffernfolge zeige, kommt im Code wieder Ķ vor.
Ich behaupte weiterhin, dass ungerade Ziffernfolgen nicht funktionieren sondern irgendwie als Text interpretiert werden und du dich nicht an der 00 aufhängen solltest. Ist denn der Code 12345G123456 (ungerade Ziffernanzahl, Buchstabe, Gerade Ziffernanzahl) Scanbar? ich denke nämlich er ist es nicht.
Aber ich muss hier jezt aussteigen, weil ich nur noch im Vermuten und Raten Modus bin. Was du brauchst ist ein Experte, der dir sagen und erklären kann ... das bin ich leider nicht.
Ich hoffe, das ich zumindest in die Richtung stoßen konnte in die es geht :-)
Grüße,
Klaus M.vdT.
(was kostet denn eine "professionelle" Lösung?)

Anzeige
AW: Barcode erzeugen lassen (Code128)
06.03.2013 12:08:38
Richard
Doch, die 12345G123456 ist scannbar.
Habe jetzt aber noch rausgefunden, dass das Problem mit der Doppelnull nur auftritt, wenn meine Zeichenfolge 12- stellig ist (so wie sie sein müssen). Trage ich einfach irgendwo noch eine Zahl ein, mache also eine 13- stellige Zahlenfolge daraus (00 belasse ich aber so), dann ist der Barcode wieder scannbar.
Ist also die Verbindung 12- stellig mit Doppelnull im hinteren Bereich...
Die professionelle Lösung würde uns rund 600$ Kosten.
Gruß,
Richy

Anzeige
AW: Barcode erzeugen lassen (Code128)
06.03.2013 12:18:03
Klaus
Hi,
ich hab was gefunden, das meine Vermutung bestätigt:
Die Zeichenfolge muß in Charset C eine geradzahlige Länge haben, d.h. es wird entweder vorne- oder hintendran eine 0 angehängt (je nach Anwendungsfall).
Zitiert aus: http://www.hi-tier.de/Entwicklung/technik/barcode_Code128.html
Der 128 stellt selbstständig das korrekte Charset ein, um Länge zu sparen. Dein Makro scheint nicht korrekt von Charset C zurück auf Charset B zu wechseln, wenn ungeradzahlig Lange Ziffern vorkommen.
Wenn du jetzt herausfindest, wie du das Charset auf B umstellst, hast du 600$ gespart :-) Ich steig leider in dem Detail nicht durch das Makro durch.
Oder häng halt vorne ne Null dran!
Grüße,
Klaus M.vdT.

Anzeige
AW: Barcode erzeugen lassen (Code128)
07.03.2013 10:42:13
UweD
Hallo Ihr 2
Habe mir den Code bisher auch noch nicht angesehen. Mach ich evtl. noch.
- - -
Vorab diese Info:
das Umschalten auf "128C" erfolgt mit Ä
das Umschalten auf "128B" erfolgt mit Ö
das Umschalten auf "128A" erfolgt mit Ü
das wird nur innerhalb der Zeichenfolge verwendet
Ganz am Anfang steht À (Strich ol nach ur) für 128A
oder Á (Strich or nach ul) für 128B
oder  (Dach) für 128C
Die Barcode-Programme versuchen die Codes so kurz wie möglich zu gestalten, daher wir z.b wenn mind 4 Ziffern aufeinanderfolgen auf 128C umgeschaltet und dann je 2 Ziffernpaare in eine Zeichen umgerechnet.
Folgt wieder ein Alphazeichen, wird wieder zurückgeschaltet. Das alles noch in Verbindung mit Checksumme....
Gruß UweD
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Barcode in Excel erstellen: Anleitung für Code 128


Schritt-für-Schritt-Anleitung

  1. VBA-Editor öffnen: Drücke ALT + F11, um den VBA-Editor in Excel zu öffnen.

  2. Neues Modul erstellen: Klicke mit der rechten Maustaste auf dein Projekt im Projekt-Explorer und wähle Einfügen -> Modul.

  3. VBA-Code einfügen: Kopiere den folgenden VBA-Code in das Modul:

    Public Function Code128_Str(ByVal Str As String) As String
       Dim c As Klasse1
       Set c = New Klasse1
       Code128_Str = c.Code128_Str(Str)
    End Function
  4. Klasse erstellen: Erstelle eine neue Klasse (Rechtsklick auf Einfügen -> Klasse), benenne sie in Klasse1 um und füge den gesamten Code für die Klasse in das Fenster ein.

  5. Excel-Tabelle vorbereiten: Gehe zurück zu deiner Excel-Tabelle und gib die Zahlenfolge ein, die du in einen Barcode umwandeln möchtest.

  6. Barcode generieren: Verwende in einer anderen Zelle die Formel =Code128_Str(A1), wobei A1 die Zelle mit deiner Zahlenfolge ist.

  7. Barcode-Schriftart anwenden: Formatiere die Zelle mit der Formel, indem du die Schriftart auf "Code 128" setzt. Du kannst die Schriftart online herunterladen, falls du sie nicht hast.


Häufige Fehler und Lösungen

  • Barcode wird nicht erkannt: Stelle sicher, dass du die Schriftart "Code 128" korrekt installiert hast. Wenn die Schriftart nicht korrekt angezeigt wird, kann der Barcode nicht gescannt werden.
  • Doppelnull-Problem: Wenn du eine Zahl wie 141004020022 eingibst und der Barcode nicht gescannt werden kann, versuche, die Eingabe zu ändern (z.B. 14100402022), was oft funktioniert.
  • Ungerade Anzahl an Ziffern: Achte darauf, dass die Eingabewerte eine gerade Anzahl an Ziffern haben, da der Code 128 dies erfordert. Füge gegebenenfalls eine Null hinzu.

Alternative Methoden

  • Excel Barcode Schriftart: Anstatt ein VBA-Makro zu verwenden, kannst du einfach Text in eine Zelle eingeben und die Schriftart auf "Code 128" ändern. Achte darauf, dass der Text mit * beginnt und endet, um den Barcode korrekt zu formatieren.
  • Barcode Generator Online: Es gibt auch Online-Tools, die dir ermöglichen, Barcodes zu generieren, die du dann in Excel importieren kannst.

Praktische Beispiele

  1. Beispiel 1: Für die Zahl 123456 gib in eine Zelle *123456* ein und formatiere die Zelle mit der Schriftart "Code 128".
  2. Beispiel 2: Verwende die Formel =Code128_Str("14100402022") und wende die Schriftart an. Teste das Scannen mit einem Barcode-Scanner.
  3. Beispiel 3: Wenn du eine Kombination von Buchstaben und Zahlen wie 141004G01022 verwendest, stelle sicher, dass die Eingabe korrekt ist, um sicherzustellen, dass der Barcode scannbar bleibt.

Tipps für Profis

  • VBA-Optimierung: Wenn du mit dem VBA-Code vertraut bist, kannst du ihn anpassen, um die Barcode-Generierung effizienter zu gestalten. Achte darauf, dass der Wechsel zwischen den Zeichensätzen optimal funktioniert.
  • Fehlerprotokollierung: Implementiere eine Fehlerprotokollierung im VBA-Code, um Probleme während der Barcode-Generierung besser zu diagnostizieren.
  • Barcode Scanner Einstellungen: Überprüfe die Einstellungen deines Barcode-Scanners, um sicherzustellen, dass er auf Code 128 eingestellt ist.

FAQ: Häufige Fragen

1. Warum funktioniert mein Barcode nicht?
Überprüfe, ob die Schriftart "Code 128" korrekt installiert ist und dass der Text in der Zelle ordnungsgemäß formatiert ist.

2. Wie kann ich die Schriftart für Barcodes in Excel installieren?
Lade die Schriftart "Code 128" von einer vertrauenswürdigen Webseite herunter und installiere sie auf deinem Computer, indem du die Schriftartdatei öffnest und auf "Installieren" klickst.

3. Was kann ich tun, wenn mein Barcode nicht gescannt wird?
Versuche, die Eingabe zu ändern, indem du führende Nullen hinzufügst oder die Eingabe so anpasst, dass die Anzahl der Ziffern gerade ist.

4. Ist es möglich, Barcodes in Access zu erstellen?
Ja, du kannst ähnliche Methoden in Access verwenden, um Barcodes zu generieren, indem du VBA-Code und entsprechende Schriftarten nutzt.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige