AW: EAN-13 Code-Generierung via VBA
05.04.2019 11:59:22
UweD
Hallo
ich nutze das hier..
Sieht dann so aus.
Tabelle1| | A | B | C |
| 1 | 4009900508476 | | 4 *pöooöö#b-,vmn* |
| 2 | | | 4 *pöooöö#b-,vmn* |
Schriftart wird in dieser Tabelle nicht dargestellt| verwendete Formeln | |
| Zelle | Formel | Bereich | N/A |
| C1 | =PERSONAL.xlsb!CodeEAN13(A1) | | |
| C2 | =C1 | | |
| Schriftformate | |
| Zelle | Rot | Grün | Blau | Color | Stil | Unterstreichung | Effekte | Durchgestrichen | Schriftart |
| C1 | 0 | 0 | 0 | 0 | Fett Kursiv | | | | Code-EAN-VH |
Zellen mit Schriftformatierung automatisch werden nicht dargestellt| http://excel-inn.de/dateien/vba_beispiele/tabellenanzeige_in_html_addin.zip |
http://Hajo-Excel.de/tools.htm
|
| XHTML-Tabelle zur Darstellung in Foren, einschl. der neuen Funktionen ab Version 2007 |
| Add-In-Version 25.14 einschl. 64 Bit |

Folgender Code wird verwendet. (liegt bei mir in der PersonalXl..)
Public Function CodeEAN13$(Text$)
Dim ZIFF As Byte, Z As Byte, PZ As Byte
Dim Z13%, ZS$, AB$, Wert$, j%
If Len(Text) < 12 Or Len(Text) > 13 Then
MsgBox "12 bzw. " & vbLf & "13 Zeichen (inkl. Prüfziffer)" & vbLf & " erforderlich"
Exit Function
End If
PZ = Modulo10(Left(Text, 12)) 'Prüfziffer ermitteln
If Len(Text) = 12 Then Text = Text & PZ 'Prüfziffer anhängen, wenn fehlt
If Right(Text, 1) <> PZ Then 'bestehende Prüfziffer checken
MsgBox "Prüfziffer falsch !" & vbLf & "Soll = " & PZ
Exit Function
End If
Z13 = Left(Text, 1)
CodeEAN13$ = Z13 & " *"
ZS = Choose(Z13 + 1, "AAAAAA", "AABABB", "AABBAB", "AABBBA", "ABAABB", _
"ABBAAB", "ABBBAA", "ABABAB", "ABABBA", "ABBABA") ' Zeichensatz A oder B
Z = 1
For j = 2 To 7
AB = Mid(ZS, Z, 1)
ZIFF = Mid(Text, j, 1)
Wert = IIf(AB = "A", Choose(ZIFF + 1, "p", "q", "w", "e", "r", "t", "z", "u", "i", "o") _
, Choose(ZIFF + 1, "ö", "a", "s", "d", "f", "g", "h", "j", "k", "l"))
CodeEAN13$ = CodeEAN13$ & Wert
Z = Z + 1
Next j
CodeEAN13$ = CodeEAN13$ & "#"
For j = 8 To 13
ZIFF = Mid(Text, j, 1)
Wert = Choose(ZIFF + 1, "-", "y", "x", "c", "v", "b", "n", "m", ",", ".") ' Zeichensatz C
CodeEAN13$ = CodeEAN13$ & Wert
Next j
CodeEAN13$ = CodeEAN13$ & "* "
End Function
Public Function Modulo10(Zelle) As Byte
'Prüfziffer nach Modulo 10, Gewichtung 3-1, rechts nach links
Dim bln As Boolean
Dim intI As Integer
Dim dblSumme As Double
For intI = Len(Zelle) To 1 Step -1
bln = Not bln
If bln = True Then
dblSumme = dblSumme + Mid(Zelle, intI, 1) * 3
Else
dblSumme = dblSumme + Mid(Zelle, intI, 1) * 1
End If
Next
Modulo10 = IIf(dblSumme Mod 10 = 0, 0, 10 - (dblSumme Mod 10))
End Function
Ist nicht von mir, sondern auch aus dem WEB.
Benötigt wird aber auch noch eine EAN13 Schriftart
LG UweD