Option Explicit Public Function ascii2Char(strInput As String) As String Dim i As Integer Dim strTemp As String Dim nPos As Integer Dim nValue As Integer
i = 1 nPos = InStr(i,strInput,"&#",vbTextCompare) While (nPos > 0) ascii2Char = ascii2Char + Left(strInput,nPos - 1) strInput = Right(strInput,Len(strInput) - nPos + 1) i = 3 strTemp = "" While (i <= Len(strInput) And IsNumeric(Mid(strInput,i,1)) And Len(strTemp) < 3) strTemp = strTemp + Mid(strInput,1) i = i + 1 Wend nValue = 0 If (strTemp <> "") Then nValue = Val(strTemp) If (nValue >= 0 And nValue < 128) Then ascii2Char = ascii2Char + Chr(nValue) ElseIf (nValue > 127 And nValue < 256) Then ascii2Char = ascii2Char + ChrW(nValue) Else ascii2Char = ascii2Char + Left(strInput,i - 1) End If If (i <= Len(strInput) And Mid(strInput,1) = ";") Then i = i + 1 End If strInput = Right(strInput,Len(strInput) - i + 1) nPos = InStr(1,vbTextCompare) Wend If (Len(strInput) > 0) Then ascii2Char = ascii2Char + strInput End If End Function
Public Function Code39(strToEncode As String) As String Dim i As Integer Dim charSet As String Dim charToEncode As String Dim charPos As Integer Dim mappingSet As String
charSet = "0123456789.+-/ $%ABCDEFGHIJKLMNOPQRSTUVWXYZ" mappingSet = "0123456789.+-/#$%ABCDEFGHIJKLMNOPQRSTUVWXYZ"
strToEncode = ascii2Char(strToEncode) For i = 1 To Len(strToEncode) charPos = InStr(1,charSet,Mid(strToEncode,1),0) If charPos > 0 Then Code39 = Code39 + Mid(mappingSet,charPos,1) End If Next i Code39 = "*" + Code39 + "*" End Function
Public Function USSCode39(strToEncode As String) As String Dim i As Integer Dim charSet As String Dim charToEncode As String Dim charPos As Integer Dim checkDigit As String Dim mappingSet As String
charSet = "0123456789.+-/ $%ABCDEFGHIJKLMNOPQRSTUVWXYZ" mappingSet = "0123456789.+-/#$%ABCDEFGHIJKLMNOPQRSTUVWXYZ"
strToEncode = ascii2Char(strToEncode) For i = 1 To Len(strToEncode) charPos = InStr(1,0) If charPos > 0 Then USSCode39 = USSCode39 + Mid(mappingSet,1) End If Next i checkDigit = MOD10(USSCode39) USSCode39 = USSCode39 + checkDigit USSCode39 = "*" + USSCode39 + "*" End Function
Public Function UPCE(ByVal strToEncode As String) As String Dim checkDigit As String Dim strMod As String Dim strUPCA As String Dim i As Integer Dim charSet As String Dim strSupplement As String Dim charPos As Integer
charSet = "0123456789|" strToEncode = maskfilter(strToEncode,charSet) charPos = InStr(1,strToEncode,"|",0)
If charPos > 0 Then strSupplement = UPC25SUPP(Right(strToEncode,Len(strToEncode) - charPos)) strToEncode = Left(strToEncode,charPos - 1) End If If Len(strToEncode) < 6 Then While Len(strToEncode) < 6 strToEncode = strToEncode + "0" Wend ElseIf Len(strToEncode) > 6 Then strToEncode = Left(strToEncode,6) End If strToEncode = "0" + strToEncode
strUPCA = Upce2upca(strToEncode) checkDigit = UPCchecksum(strUPCA) Select Case checkDigit Case 0: strMod = "BBBAAA" Case 1: strMod = "BBABAA" Case 2: strMod = "BBAABA" Case 3: strMod = "BBAAAB" Case 4: strMod = "BABBAA" Case 5: strMod = "BAABBA" Case 6: strMod = "BAAABB" Case 7: strMod = "BABABA" Case 8: strMod = "BABAAB" Case 9: strMod = "BAABAB" End Select
UPCE = "[" For i = 2 To 7 If Mid(strMod,i - 1,1) = "A" Then UPCE = UPCE + convertSetAText(Mid(strToEncode,1)) ElseIf Mid(strMod,1) = "B" Then UPCE = UPCE + convertSetBText(Mid(strToEncode,1)) End If Next i UPCE = textOnly("0") + UPCE + "'" + textOnly(checkDigit) + " " + strSupplement End Function Public Function EAN13(strToEncode As String) As String Dim i As Integer Dim checkDigit As String Dim charToEncode As String Dim strMod As String Dim charSet As String Dim strSupplement As String Dim charPos As Integer
charSet = "0123456789|" strToEncode = maskfilter(strToEncode,charSet) charPos = InStr(1,0)
If charPos > 0 Then strSupplement = UPC25SUPP(Right(strToEncode,charPos - 1) End If If Len(strToEncode) < 12 Then While Len(strToEncode) < 12 strToEncode = strToEncode + "0" Wend ElseIf Len(strToEncode) > 12 Then strToEncode = Left(strToEncode,12) End If
Select Case Mid(strToEncode,1,1) Case 0: strMod = "AAAAAA" Case 1: strMod = "AABABB" Case 2: strMod = "AABBAB" Case 3: strMod = "AABBBA" Case 4: strMod = "ABAABB" Case 5: strMod = "ABBAAB" Case 6: strMod = "ABBBAA" Case 7: strMod = "ABABAB" Case 8: strMod = "ABABBA" Case 9: strMod = "ABBABA" End Select
EAN13 = textOnly(Mid(strToEncode,1)) + "["
For i = 2 To 7 If Mid(strMod,1) = "A" Then EAN13 = EAN13 + convertSetAText(Mid(strToEncode,1) = "B" Then EAN13 = EAN13 + convertSetBText(Mid(strToEncode,1)) End If Next i EAN13 = EAN13 + "|" For i = 8 To 12 EAN13 = EAN13 + convertSetCText(Mid(strToEncode,1)) Next i checkDigit = UPCchecksum(strToEncode) EAN13 = EAN13 + convertSetCText(checkDigit) + "]" + " " + strSupplement End Function Public Function EAN8(strToEncode As String) As String Dim i As Integer Dim charToEncode As String Dim charSet As String Dim strSupplement As String Dim charPos As Integer
charSet = "0123456789|" strToEncode = maskfilter(strToEncode,charPos - 1) End If If Len(strToEncode) < 7 Then While Len(strToEncode) < 7 strToEncode = strToEncode + "0" Wend ElseIf Len(strToEncode) > 7 Then strToEncode = Left(strToEncode,7) End If
For i = 1 To 4 EAN8 = EAN8 + convertSetAText(Mid(strToEncode,1)) Next i EAN8 = EAN8 + "|" For i = 5 To 7 EAN8 = EAN8 + convertSetCText(Mid(strToEncode,1)) Next i EAN8 = "[" + EAN8 + convertSetCText(UPCchecksum(strToEncode)) + "]" + " " + strSupplement End Function
Public Function Code39Mod43(strToEncode As String) As String Dim charSet As String Dim mappingSet As String Dim i As Integer Dim checkSum As Integer Dim charPos As Integer
charSet = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ-. $/+%" mappingSet = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ-.#$/+%" strToEncode = ascii2Char(strToEncode)
For i = 1 To Len(strToEncode) charPos = InStr(1,vbBinaryCompare) checkSum = checkSum + (charPos - 1) Code39Mod43 = Code39Mod43 + Mid(mappingSet,1) Next i checkSum = checkSum Mod 43 Code39Mod43 = "*" + Code39Mod43 + Mid(mappingSet,checkSum + 1,1) + "*" End Function
Public Function UPCA(strToEncode As String) As String Dim checkDigit As String Dim i As Integer Dim charSet As String Dim strSupplement As String Dim charPos As Integer
charSet = "0123456789|" strToEncode = maskfilter(strToEncode,charPos - 1) End If
If Len(strToEncode) < 11 Then While Len(strToEncode) < 11 strToEncode = strToEncode + "0" Wend ElseIf Len(strToEncode) > 11 Then strToEncode = Left(strToEncode,11) End If
UPCA = textOnly(Mid(strToEncode,1)) + "[" + convertSetANoText(Mid(strToEncode,1))
For i = 1 To 5 UPCA = UPCA + convertSetAText(Mid(strToEncode,(1 + i),1)) Next i
UPCA = UPCA + "|" For i = 1 To 5 UPCA = UPCA + convertSetCText(Mid(strToEncode,(6 + i),1)) Next i checkDigit = UPCchecksum(strToEncode) UPCA = UPCA + convertSetCNoText(checkDigit) + "]" + textOnly(checkDigit) UPCA = UPCA + " " + strSupplement End Function
Function textOnly(ch As String) As String Select Case ch Case "1": textOnly = Chr(225) Case "2": textOnly = Chr(226) Case "3": textOnly = Chr(227) Case "4": textOnly = Chr(228) Case "5": textOnly = Chr(229) Case "6": textOnly = Chr(230) Case "7": textOnly = Chr(231) Case "8": textOnly = Chr(232) Case "9": textOnly = Chr(233) Case "0": textOnly = Chr(224) End Select End Function
Function convertSetAText(ch As String) As String Select Case ch Case "1": convertSetAText = "1" Case "2": convertSetAText = "2" Case "3": convertSetAText = "3" Case "4": convertSetAText = "4" Case "5": convertSetAText = "5" Case "6": convertSetAText = "6" Case "7": convertSetAText = "7" Case "8": convertSetAText = "8" Case "9": convertSetAText = "9" Case "0": convertSetAText = "0" End Select End Function
Function convertSetANoText(ch As String) As String Select Case ch Case "1": convertSetANoText = "!" Case "2": convertSetANoText = "@" Case "3": convertSetANoText = "#" Case "4": convertSetANoText = "$" Case "5": convertSetANoText = "%" Case "6": convertSetANoText = "^" Case "7": convertSetANoText = "&" Case "8": convertSetANoText = "*" Case "9": convertSetANoText = "(" Case "0": convertSetANoText = ")" End Select End Function
Function convertSetCText(ch As String) As String Select Case ch Case "1": convertSetCText = "A" Case "2": convertSetCText = "S" Case "3": convertSetCText = "D" Case "4": convertSetCText = "F" Case "5": convertSetCText = "G" Case "6": convertSetCText = "H" Case "7": convertSetCText = "J" Case "8": convertSetCText = "K" Case "9": convertSetCText = "L" Case "0": convertSetCText = ":" End Select End Function
Function convertSetCNoText(ch As String) As String Select Case ch Case "1": convertSetCNoText = "a" Case "2": convertSetCNoText = "s" Case "3": convertSetCNoText = "d" Case "4": convertSetCNoText = "f" Case "5": convertSetCNoText = "g" Case "6": convertSetCNoText = "h" Case "7": convertSetCNoText = "j" Case "8": convertSetCNoText = "k" Case "9": convertSetCNoText = "l" Case "0": convertSetCNoText = ";" End Select End Function
Function convertSetBText(ch As String) As String Select Case ch Case "1": convertSetBText = "Q" Case "2": convertSetBText = "W" Case "3": convertSetBText = "E" Case "4": convertSetBText = "R" Case "5": convertSetBText = "T" Case "6": convertSetBText = "Y" Case "7": convertSetBText = "U" Case "8": convertSetBText = "I" Case "9": convertSetBText = "O" Case "0": convertSetBText = "P" End Select End Function Function convertSetBNoText(ch As String) As String Select Case ch Case "1": convertSetBNoText = "q" Case "2": convertSetBNoText = "w" Case "3": convertSetBNoText = "e" Case "4": convertSetBNoText = "r" Case "5": convertSetBNoText = "t" Case "6": convertSetBNoText = "y" Case "7": convertSetBNoText = "u" Case "8": convertSetBNoText = "i" Case "9": convertSetBNoText = "o" Case "0": convertSetBNoText = "p" End Select End Function
Function UPCchecksum(digits As String) As String Dim i As Integer Dim checkSum As Integer Dim strLen As Integer strLen = Len(digits) For i = 1 To strLen If i Mod 2 = 1 Then checkSum = checkSum + Val(Mid(digits,strLen - i + 1,1)) * 3 Else checkSum = checkSum + Val(Mid(digits,1)) End If Next i UPCchecksum = checkSum Mod 10 If UPCchecksum <> 0 Then UPCchecksum = 10 - UPCchecksum End Function
Public Function Upce2upca(ByVal digits As String) As String If Mid(digits,1) <> "0" _ Or Len(digits) <> 7 _ Or Not IsNumeric(Mid(digits,2,6)) Then Upce2upca = "00000000000" Exit Function End If Select Case Mid(digits,7,1) Case "0" Upce2upca = Mid(digits,3) + Mid(digits,1) + "0000" + Mid(digits,4,3) Case "1" Upce2upca = Mid(digits,3) Case "2" Upce2upca = Mid(digits,3) Case "3" If InStr(1,"012",Mid(digits,0) Then MsgBox ("Last digit is 3,then the forth digit can not be 0,2!") Else Upce2upca = Mid(digits,4) + "00000" + Mid(digits,5,2) End If Case "4" Upce2upca = Mid(digits,5) + "00000" + Mid(digits,6,1) Case "5" Upce2upca = Mid(digits,6) + "0000" + Mid(digits,1) Case "6" Upce2upca = Mid(digits,1) Case "7" Upce2upca = Mid(digits,1) Case "8" Upce2upca = Mid(digits,1) Case "9" Upce2upca = Mid(digits,1) Case Else MsgBox ("The last digits of UPC-E code is not a numeric!") Exit Function End Select End Function
Public Function Code11(strToEncode As String) As String Dim CheckSumC As Integer Dim checksumK As Integer Dim charSet As String
charSet = "0123456789-" Code11 = maskfilter(strToEncode,charSet) CheckSumC = code11Checksum(Code11,10) CheckSumC = CheckSumC Mod 11 Code11 = Code11 + Mid(charSet,CheckSumC + 1,1)
If Len(Code11) > 11 Then checksumK = code11Checksum(Code11,9) checksumK = checksumK Mod 11 Code11 = "*" + Code11 + Mid(charSet,checksumK + 1,1) + "*" Else Code11 = "*" + Code11 + "*" End If End Function
Function maskfilter(strToEncode As String,charSet As String) As String Dim i As Integer Dim charPos As Integer Dim tempChar As String
For i = 1 To Len(strToEncode) tempChar = Mid(strToEncode,1) charPos = InStr(1,tempChar,0) If charPos > 0 Then maskfilter = maskfilter + Mid(strToEncode,1) End If Next i End Function Function code11Checksum(strToEncode As String,mode As Integer) As Integer Dim i As Integer Dim strLen As Integer Dim charPos As Integer Dim charToEncode As String Dim charSet As String
charSet = "123456789-" strLen = Len(strToEncode) For i = 1 To strLen charToEncode = Mid(strToEncode,charToEncode,0) If charPos > 0 Then code11Checksum = (i Mod mode) * charPos + code11Checksum Next i End Function
Public Function Code25(strToEncode As String) As String Dim charSet As String charSet = "0123456789" strToEncode = maskfilter(strToEncode,charSet) Code25 = "(" + strToEncode + ")" End Function
Public Function code25Check(strToEncode As String) As String Dim i As Integer Dim strLen As Integer Dim checkSum As Integer Dim checkDigit As String Dim charSet As String
charSet = "0123456789" strToEncode = maskfilter(strToEncode,charSet)
strLen = Len(strToEncode) For i = 1 To strLen If i Mod 2 = 1 Then checkSum = checkSum + 3 * Val(Mid(strToEncode,1)) Else checkSum = checkSum + Val(Mid(strToEncode,1)) End If Next i checkSum = checkSum Mod 10 If checkSum = 0 Then checkDigit = "0" Else checkDigit = Chr(10 - checkSum + Asc("0")) End If code25Check = "(" + strToEncode + checkDigit + ")" End Function
Public Function ITF25Check(strToEncode As String) As String Dim i As Integer Dim charToEncode As String Dim checkDigit As String Dim charVal As Integer Dim charSet As String
charSet = "0123456789" strToEncode = maskfilter(strToEncode,charSet)
If Len(strToEncode) Mod 2 = 0 Then strToEncode = "0" + strToEncode checkDigit = MOD10(strToEncode) strToEncode = strToEncode + checkDigit
For i = 1 To Len(strToEncode) Step 2 charToEncode = Mid(strToEncode,2) charVal = Val(charToEncode) If charVal >= 0 And charVal <= 93 Then ITF25Check = ITF25Check + Chr(Asc("!") + charVal) Else ITF25Check = ITF25Check + Chr(charVal - 94 + 224) End If Next i ITF25Check = Chr(230) + ITF25Check + Chr(231) End Function
Public Function MOD10(strInput As String) As String Dim i As Integer Dim checkSum As Integer Dim strLen As Integer Dim charSet As String Dim str As String
charSet = "0123456789" str = maskfilter(strInput,charSet)
strLen = Len(str) For i = 1 To strLen If i Mod 2 = 1 Then checkSum = checkSum + 3 * Val(Mid(str,1)) Else checkSum = checkSum + Val(Mid(str,1)) End If Next i checkSum = checkSum Mod 10 If checkSum = 0 Then MOD10 = "0" Else MOD10 = Chr(10 - checkSum + Asc("0")) End If End Function
Public Function ITF25(strToEncode As String) As String Dim i As Integer Dim charToEncode As String Dim charVal As Integer Dim charSet As String
charSet = "0123456789" strToEncode = maskfilter(strToEncode,charSet) If Len(strToEncode) Mod 2 = 1 Then strToEncode = "0" + strToEncode
For i = 1 To Len(strToEncode) Step 2 charToEncode = Mid(strToEncode,2) charVal = Val(charToEncode) If charVal >= 0 And charVal <= 93 Then ITF25 = ITF25 + Chr(Asc("!") + charVal) Else ITF25 = ITF25 + Chr(charVal - 94 + 224) End If Next i
ITF25 = Chr(230) + ITF25 + Chr(231) End Function
Public Function MSI(strToEncode As String) As String Dim i As Integer Dim charToEncode As String Dim charPos As Integer Dim checkSum As Integer Dim checkDigit As String Dim charVal As Integer Dim strLen As Integer Dim newno As String
strToEncode = maskfilter(strToEncode,"0123456789")
strLen = Len(strToEncode) For i = 1 To strLen charToEncode = Mid(strToEncode,1) charVal = Val(charToEncode) If i Mod 2 = (strLen Mod 2) Then newno = newno + charToEncode Else checkSum = checkSum + charVal End If Next i newno = str(2 * Val(newno)) For i = 1 To Len(newno) checkSum = checkSum + Val(Mid(newno,1)) Next i checkSum = checkSum Mod 10 If checkSum <> 0 Then checkSum = 10 - checkSum End If MSI = "[" + strToEncode + Chr(Asc("0") + checkSum) + "]" End Function
Function Code128aCharSet() As String Dim i As Integer For i = 32 To 95 Code128aCharSet = Code128aCharSet + Chr(i) Next i For i = 0 To 31 Code128aCharSet = Code128aCharSet + Chr(i) Next i For i = 241 To 247 Code128aCharSet = Code128aCharSet + ChrW(i) Next i End Function
Function Code128bCharSet() As String Dim i As Integer For i = 32 To 127 Code128bCharSet = Code128bCharSet + Chr(i) Next i For i = 241 To 247 Code128bCharSet = Code128bCharSet + ChrW(i) Next i End Function
Function Code128cCharset() As String Dim i As Integer For i = 0 To 9 Code128cCharset = Code128cCharset + Chr(i + Asc(0)) Next i For i = 245 To 247 Code128cCharset = Code128cCharset + ChrW(i) Next i End Function
Function code128MappingSet() As String Dim i As Integer code128MappingSet = ChrW(252) For i = 33 To 126 code128MappingSet = code128MappingSet + ChrW(i) Next i For i = 240 To 251 code128MappingSet = code128MappingSet + ChrW(i) Next i End Function
Function code128CSMapping(ByVal nCode As Long) As Long Dim i As Long If (nCode = 0) Then code128CSMapping = 252 ElseIf (nCode >= 1 And nCode <= 38) Then code128CSMapping = 384 + nCode - 1 ElseIf (nCode >= 39 And nCode <= 94) Then code128CSMapping = 166 + nCode - 39 Else code128CSMapping = 240 + nCode - 95 End If End Function
Function code128CCSMapping(ByVal nCode As Long) As Long Dim i As Long If (nCode = 0) Then code128CCSMapping = 253 ElseIf (nCode >= 1 And nCode <= 38) Then code128CCSMapping = 384 + nCode - 1 ElseIf (nCode >= 39 And nCode <= 99) Then code128CCSMapping = 166 + nCode - 39 Else code128CCSMapping = 245 + nCode - 100 End If End Function
Public Function code128Auto(ByVal strToEncode As String) As String Dim i As Integer Dim charToEncode As String Dim charPos As Integer Dim checkSum As Integer Dim checkDigit As String Dim AcharSet As String Dim BcharSet As String Dim CcharSet As String Dim mappingSet As String Dim curCharSet As String Dim strLen As Integer Dim charVal As Integer Dim weight As Integer
If strToEncode = "" Then code128Auto = "" Exit Function End If
AcharSet = Code128aCharSet BcharSet = Code128bCharSet CcharSet = Code128cCharset mappingSet = code128MappingSet strToEncode = ascii2Char(strToEncode) strLen = Len(strToEncode) charVal = AscW(Mid(strToEncode,1)) If charVal <= 31 Then curCharSet = AcharSet If charVal >= 32 And charVal <= 126 Then curCharSet = BcharSet If charVal = 242 Then curCharSet = BcharSet If charVal = 247 Then curCharSet = CcharSet If ((strLen > 4) And IsNumeric(Mid(strToEncode,4))) Then curCharSet = CcharSet
Select Case curCharSet Case AcharSet code128Auto = code128Auto + ChrW(248) Case BcharSet code128Auto = code128Auto + ChrW(249) Case CcharSet code128Auto = code128Auto + ChrW(250) End Select
For i = 1 To strLen charToEncode = Mid(strToEncode,1) charVal = AscW(charToEncode)
If (charVal = 242) Then If curCharSet = CcharSet Then code128Auto = code128Auto + ChrW(249) curCharSet = BcharSet End If code128Auto = code128Auto + ChrW(242) i = i + 1 charToEncode = Mid(strToEncode,1) charVal = AscW(charToEncode) End If
If (charVal = 247) Then code128Auto = code128Auto + ChrW(247) ElseIf ((i < strLen - 2) And (IsNumeric(charToEncode)) And (IsNumeric(Mid(strToEncode,i + 1,1))) And (IsNumeric(Mid(strToEncode,4)))) Or _ ((i < strLen) And (IsNumeric(charToEncode)) And (IsNumeric(Mid(strToEncode,1))) And (curCharSet = CcharSet)) Then If curCharSet <> CcharSet Then code128Auto = code128Auto + ChrW(244) curCharSet = CcharSet End If charToEncode = Mid(strToEncode,2) charVal = Val(charToEncode) code128Auto = code128Auto + Mid(mappingSet,charVal + 1,1) i = i + 1 ElseIf (((i <= strLen) And (charVal < 31)) Or ((curCharSet = AcharSet) And (charVal > 32 And charVal < 96))) Then If curCharSet <> AcharSet Then code128Auto = code128Auto + ChrW(246) curCharSet = AcharSet End If charPos = InStr(1,curCharSet,0) code128Auto = code128Auto + Mid(mappingSet,1) ElseIf (i <= strLen) And (charVal > 31 And charVal < 127) Then If curCharSet <> BcharSet Then code128Auto = code128Auto + ChrW(245) curCharSet = BcharSet End If charPos = InStr(1,1) End If Next i
strLen = Len(code128Auto) For i = 1 To strLen charVal = (AscW(Mid(code128Auto,1))) If charVal = 252 Then charVal = 0 ElseIf charVal <= 126 Then charVal = charVal - 32 ElseIf charVal >= 240 Then charVal = charVal - 145 End If If i > 1 Then weight = i - 1 Else weight = 1 End If checkSum = checkSum + charVal * weight Next i checkSum = checkSum Mod 103 checkDigit = Mid(mappingSet,1) code128Auto = code128Auto + checkDigit + ChrW(251) End Function
Public Function Code128A(ByVal strToEncode As String) As String Dim i As Integer Dim charToEncode As String Dim charPos As Integer Dim checkSum As Long Dim checkDigit As Long Dim strTemp As String Dim AcharSet As String Dim mappingSet As String
AcharSet = Code128aCharSet mappingSet = code128MappingSet strToEncode = ascii2Char(strToEncode)
For i = 1 To Len(strToEncode) charToEncode = Mid(strToEncode,AcharSet,0) If charPos > 0 Then strTemp = strTemp + charToEncode Next i
checkSum = 103 For i = 1 To Len(strTemp) charToEncode = Mid(strTemp,0) If charPos > 0 Then Code128A = Code128A + Mid(mappingSet,1) checkSum = checkSum + i * (charPos - 1) End If Next i
checkSum = checkSum Mod 103 checkDigit = code128CSMapping(checkSum) Code128A = ChrW(248) + Code128A + ChrW(checkDigit) + ChrW(251) End Function
Public Function Code128B(ByVal strToEncode As String) As String Dim i As Integer Dim charToEncode As String Dim charPos As Integer Dim checkSum As Long Dim strTemp As String Dim checkDigit As Long Dim BcharSet As String Dim mappingSet As String
BcharSet = Code128bCharSet mappingSet = code128MappingSet
strToEncode = ascii2Char(strToEncode) For i = 1 To Len(strToEncode) charToEncode = Mid(strToEncode,BcharSet,0) If charPos > 0 Then strTemp = strTemp + charToEncode Next i
checkSum = 104 For i = 1 To Len(strTemp) charToEncode = Mid(strTemp,0) If charPos > 0 Then Code128B = Code128B + Mid(mappingSet,1) checkSum = checkSum + i * (charPos - 1) End If Next i checkSum = checkSum Mod 103 checkDigit = code128CSMapping(checkSum) Code128B = ChrW(249) + Code128B + ChrW(checkDigit) + ChrW(251) End Function
Public Function Code128C(ByVal strToEncode As String) As String Dim i As Integer Dim charToEncode As String Dim charPos As Integer Dim checkSum As Long Dim strTemp As String Dim checkDigit As Long Dim charVal As Integer Dim CcharSet As String Dim mappingSet As String
CcharSet = Code128cCharset mappingSet = code128MappingSet
strToEncode = ascii2Char(strToEncode) For i = 1 To Len(strToEncode) charToEncode = Mid(strToEncode,CcharSet,0) If charPos > 0 Then strTemp = strTemp + charToEncode Next i If Len(strTemp) Mod 2 = 1 Then strTemp = "0" + strTemp
checkSum = 105 For i = 1 To Len(strTemp) Step 2 charToEncode = Mid(strTemp,2) charVal = Val(charToEncode) Code128C = Code128C + Mid(mappingSet,1) Next i
For i = 1 To Len(Code128C) charToEncode = Mid(Code128C,1) charVal = AscW(charToEncode) If charVal = 252 Then charVal = 0 ElseIf charVal >= 33 And charVal < 127 Then checkSum = checkSum + i * (charVal - 32) Else checkSum = checkSum + i * (charVal - 145) End If Next i checkSum = checkSum Mod 103 checkDigit = code128CCSMapping(checkSum) Code128C = ChrW(250) + Code128C + ChrW(checkDigit) + ChrW(251) End Function
Public Function USPS128(ByVal strToEncode As String) As String Dim checkDigit As String Dim charSet As String
strToEncode = ascii2Char(strToEncode) checkDigit = MOD10(strToEncode) If (Mid(strToEncode,1) <> ChrW(247)) Then strToEncode = ChrW(247) + strToEncode End If USPS128 = code128Auto(strToEncode + checkDigit) End Function
Public Function UCCEAN128(ByVal strToEncode As String) As String Dim charSet As String Dim i As Integer Dim charToEncode As String
strToEncode = ascii2Char(strToEncode) strToEncode = UCase(strToEncode)
If (Mid(strToEncode,1) <> ChrW(247)) Then strToEncode = ChrW(247) + strToEncode End If charSet = Mid(strToEncode,1) For i = 2 To Len(strToEncode) charToEncode = Mid(strToEncode,1) If (Asc(charToEncode) >= 48 And Asc(charToEncode) <= 57) Or (Asc(charToEncode) >= 65 And Asc(charToEncode) <= 90) Or (charToEncode = ChrW(247)) Then charSet = charSet + charToEncode End If Next i UCCEAN128 = code128Auto(charSet) End Function
Public Function Code93(strToEncode As String) As String Dim i As Integer Dim charToEncode As String Dim charPos As Integer Dim weightC As Integer Dim weightK As Integer Dim CheckSumC As Integer Dim checksumK As Integer Dim charSet As String Dim mappingSet As String charSet = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ-. $/+%^)&(" mappingSet = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ-.#$/+%^)&(" strToEncode = ascii2Char(strToEncode) For i = 1 To Len(strToEncode) charToEncode = Mid(strToEncode,1) If Asc(charToEncode) = 0 Then Code93 = Code93 + ")" + "U" ElseIf Asc(charToEncode) >= 1 And Asc(charToEncode) <= 26 Then Code93 = Code93 + "^" + Chr(Asc(charToEncode) + Asc("A") - 1) ElseIf Asc(charToEncode) >= 27 And Asc(charToEncode) <= 31 Then Code93 = Code93 + ")" + Chr(Asc(charToEncode) - 27 + Asc("A")) ElseIf Asc(charToEncode) = 32 Then 'space Code93 = Code93 + "#" ElseIf Asc(charToEncode) >= 33 And Asc(charToEncode) <= 44 Then Code93 = Code93 + "&" + Chr(Asc(charToEncode) - 33 + Asc("A")) ElseIf charToEncode = "-" Then Code93 = Code93 + charToEncode ElseIf charToEncode = "." Then Code93 = Code93 + charToEncode ElseIf charToEncode = "/" Then Code93 = Code93 + "&" + "O" ElseIf Asc(charToEncode) >= 48 And Asc(charToEncode) <= 57 Then Code93 = Code93 + charToEncode ElseIf charToEncode = ":" Then Code93 = Code93 + "&" + "Z" ElseIf Asc(charToEncode) >= 59 And Asc(charToEncode) <= 63 Then Code93 = Code93 + ")" + Chr(Asc(charToEncode) - 59 + Asc("F")) ElseIf Asc(charToEncode) = 64 Then Code93 = Code93 + ")" + "V" ElseIf Asc(charToEncode) >= 65 And Asc(charToEncode) <= 90 Then Code93 = Code93 + charToEncode ElseIf Asc(charToEncode) >= 91 And Asc(charToEncode) <= 95 Then Code93 = Code93 + ")" + Chr(Asc(charToEncode) - 91 + Asc("K")) ElseIf Asc(charToEncode) = 96 Then Code93 = Code93 + ")" + "W" ElseIf Asc(charToEncode) >= 97 And Asc(charToEncode) <= 122 Then Code93 = Code93 + "(" + Chr(Asc(charToEncode) - 97 + Asc("A")) ElseIf Asc(charToEncode) >= 123 And Asc(charToEncode) <= 127 Then Code93 = Code93 + ")" + Chr(Asc(charToEncode) - 123 + Asc("P")) End If Next i For i = 1 To Len(Code93) weightC = ((i - 1) Mod 20) + 1 charToEncode = Mid(Code93,Len(Code93) - i + 1,mappingSet,0) CheckSumC = CheckSumC + weightC * (charPos - 1) Next i Code93 = Code93 + Mid(mappingSet,(CheckSumC Mod 47) + 1,1) For i = 1 To Len(Code93) weightK = ((i - 1) Mod 15) + 1 charToEncode = Mid(Code93,0) checksumK = checksumK + weightK * (charPos - 1) Next i Code93 = Code93 + Mid(mappingSet,(checksumK Mod 47) + 1,1) Code93 = "*" + Code93 + "*" + "|" End Function
Public Function Codabar(strToEncode As String) As String Dim i As Integer Dim charToEncode As String Dim charPos As Integer Dim charSet As String charSet = "0123456789-$:/.+" strToEncode = maskfilter(strToEncode,charSet) Codabar = "A" + strToEncode + "B" End Function
Public Function Code39FullAscii(strToEncode As String) As String Dim i As Integer Dim charToEncode As String Dim charSet As String Dim mappingSet As String Dim strTemp As String strToEncode = ascii2Char(strToEncode) For i = 1 To Len(strToEncode) charToEncode = Mid(strToEncode,1) If Asc(charToEncode) = 0 Then strTemp = strTemp + "%U" ElseIf Asc(charToEncode) >= 1 And Asc(charToEncode) <= 26 Then strTemp = strTemp + "$" + Chr(Asc(charToEncode) + Asc("A") - 1) ElseIf Asc(charToEncode) >= 27 And Asc(charToEncode) <= 31 Then strTemp = strTemp + "%" + Chr(Asc(charToEncode) - 27 + Asc("A")) ElseIf Asc(charToEncode) = 32 Then strTemp = strTemp + "=" ElseIf Asc(charToEncode) >= 33 And Asc(charToEncode) <= 44 Then strTemp = strTemp + "/" + Chr(Asc(charToEncode) - 33 + Asc("A")) ElseIf charToEncode = "-" Then strTemp = strTemp + charToEncode ElseIf charToEncode = "." Then strTemp = strTemp + charToEncode ElseIf charToEncode = "/" Then strTemp = strTemp + "/O" ElseIf Asc(charToEncode) >= 48 And Asc(charToEncode) <= 57 Then strTemp = strTemp + charToEncode ElseIf charToEncode = ":" Then strTemp = strTemp + "/Z" ElseIf Asc(charToEncode) >= 59 And Asc(charToEncode) <= 63 Then strTemp = strTemp + "%" + Chr(Asc(charToEncode) - 59 + Asc("F")) ElseIf Asc(charToEncode) = 64 Then strTemp = strTemp + "%V" ElseIf Asc(charToEncode) >= 65 And Asc(charToEncode) <= 90 Then strTemp = strTemp + charToEncode ElseIf Asc(charToEncode) >= 91 And Asc(charToEncode) <= 95 Then strTemp = strTemp + "%" + Chr(Asc(charToEncode) - 91 + Asc("K")) ElseIf Asc(charToEncode) = 96 Then strTemp = strTemp + "%W" ElseIf Asc(charToEncode) >= 97 And Asc(charToEncode) <= 122 Then strTemp = strTemp + "+" + Chr(Asc(charToEncode) - 97 + Asc("A")) ElseIf Asc(charToEncode) >= 123 And Asc(charToEncode) <= 127 Then strTemp = strTemp + "%" + Chr(Asc(charToEncode) - 123 + Asc("P")) End If Next i Code39FullAscii = "*" + strTemp + "*" End Function
Public Function Code39Extended(strToEncode As String) As String Dim i As Integer Dim charToEncode As String Dim charVal As Integer
strToEncode = ascii2Char(strToEncode) For i = 1 To Len(strToEncode) charToEncode = Mid(strToEncode,1) charVal = Asc(charToEncode) If charToEncode = " " Then Code39Extended = Code39Extended + "#" ElseIf charToEncode = "*" Then Code39Extended = Code39Extended + Chr(176) ElseIf charToEncode = "#" Then Code39Extended = Code39Extended + Chr(177) ElseIf charVal = 127 Then Code39Extended = Code39Extended + Chr(175) ElseIf charVal >= 0 And charVal <= 31 Then Code39Extended = Code39Extended + Chr(224 + charVal) Else Code39Extended = Code39Extended + charToEncode End If Next i Code39Extended = "*" + Code39Extended + "*" End Function
Public Function Bookland(strToEncode As String) As String Dim i As Integer Dim charSet As String charSet = "0123456789" strToEncode = maskfilter(strToEncode,charSet) If Len(strToEncode) > 10 Then strToEncode = Left(strToEncode,10) ElseIf Len(strToEncode) < 10 Then While Len(strToEncode) < 10 strToEncode = strToEncode + "0" Wend End If Bookland = "978" + Left(strToEncode,9) Bookland = EAN13(Bookland) End Function
Public Function codeISBN(strToEncode As String) As String Dim i As Integer Dim charToEncode As String Dim charPos As Integer Dim weight As Integer Dim checkSum As Integer Dim checkDigit As String Dim charSet As String charSet = "0123456789" strToEncode = maskfilter(strToEncode,charSet) If Len(strToEncode) > 9 Then strToEncode = Left(strToEncode,9) ElseIf Len(strToEncode) < 9 Then While Len(strToEncode) < 9 strToEncode = strToEncode + "0" Wend End If codeISBN = strToEncode For i = 1 To Len(codeISBN) weight = 11 - i charToEncode = Mid(codeISBN,1) checkSum = checkSum + weight * Val(charToEncode) Next i checkSum = 11 - (checkSum Mod 11) checkDigit = Chr(checkSum + Asc("0")) codeISBN = codeISBN + checkDigit End Function
Function LeftHandEncoding(digit As Integer,parity As Integer) As String Select Case digit Case 0 If parity = 1 Then LeftHandEncoding = "/" ElseIf parity = 0 Then LeftHandEncoding = "?" End If Case 1 If parity = 1 Then LeftHandEncoding = "z" ElseIf parity = 0 Then LeftHandEncoding = "Z" End If Case 2 If parity = 1 Then LeftHandEncoding = "x" ElseIf parity = 0 Then LeftHandEncoding = "X" End If Case 3 If parity = 1 Then LeftHandEncoding = "c" ElseIf parity = 0 Then LeftHandEncoding = "C" End If Case 4 If parity = 1 Then LeftHandEncoding = "v" ElseIf parity = 0 Then LeftHandEncoding = "V" End If Case 5 If parity = 1 Then LeftHandEncoding = "b" ElseIf parity = 0 Then LeftHandEncoding = "B" End If Case 6 If parity = 1 Then LeftHandEncoding = "n" ElseIf parity = 0 Then LeftHandEncoding = "N" End If Case 7 If parity = 1 Then LeftHandEncoding = "m" ElseIf parity = 0 Then LeftHandEncoding = "M" End If Case 8 If parity = 1 Then LeftHandEncoding = "," ElseIf parity = 0 Then LeftHandEncoding = "<" End If Case 9 If parity = 1 Then LeftHandEncoding = "." ElseIf parity = 0 Then LeftHandEncoding = ">" End If End Select End Function Public Function UPC25SUPP(strToEncode As String) As String Dim i As Integer Dim charToEncode As String Dim charPosition As Integer Dim strLen As Integer For i = 1 To Len(strToEncode) charToEncode = Mid(strToEncode,1) charPosition = InStr(1,"0123456789",0) If charPosition > 0 Then UPC25SUPP = UPC25SUPP + charToEncode End If Next i strLen = Len(UPC25SUPP) If strLen = 0 Then UPC25SUPP = UPC2SUPP("00") ElseIf strLen = 1 Then UPC25SUPP = UPC2SUPP(UPC25SUPP + "0") ElseIf strLen = 2 Then UPC25SUPP = UPC2SUPP(UPC25SUPP) ElseIf strLen = 3 Then UPC25SUPP = UPC5SUPP(UPC25SUPP + "00") ElseIf strLen = 4 Then UPC25SUPP = UPC5SUPP(UPC25SUPP + "0") ElseIf strLen = 5 Then UPC25SUPP = UPC5SUPP(UPC25SUPP) Else UPC25SUPP = UPC5SUPP(Left(UPC25SUPP,5)) End If End Function
Public Function UPC2SUPP(strToEncode As String) As String Dim i As Integer Dim charToEncode As String Dim nTemp As Integer Dim parity1 As Integer Dim parity2 As Integer nTemp = Val(strToEncode) Mod 4 If nTemp = 0 Then parity1 = 1 parity2 = 1 ElseIf nTemp = 1 Then parity1 = 1 parity2 = 0 ElseIf nTemp = 2 Then parity1 = 0 parity2 = 1 ElseIf nTemp = 3 Then parity1 = 0 parity2 = 0 End If UPC2SUPP = "{" charToEncode = Mid(strToEncode,1) UPC2SUPP = UPC2SUPP + LeftHandEncoding(Val(charToEncode),parity1) UPC2SUPP = UPC2SUPP + "/" charToEncode = Mid(strToEncode,parity2) End Function Function Parity5(digit As Integer) As String Select Case digit Case 0 Parity5 = "00111" Case 1 Parity5 = "01011" Case 2 Parity5 = "01101" Case 3 Parity5 = "01110" Case 4 Parity5 = "10011" Case 5 Parity5 = "11001" Case 6 Parity5 = "11100" Case 7 Parity5 = "10101" Case 8 Parity5 = "10110" Case 9 Parity5 = "11010" End Select End Function
Public Function UPC5SUPP(strToEncode As String) As String Dim i As Integer Dim strParity As String Dim weightSum As Integer weightSum = 3 * Val(Mid(strToEncode,1)) + 9 * Val(Mid(strToEncode,1)) + 3 * Val(Mid(strToEncode,3,1)) strParity = Parity5(weightSum Mod 10) UPC5SUPP = "{" For i = 1 To 5 UPC5SUPP = UPC5SUPP + LeftHandEncoding(Val(Mid(strToEncode,1)),Val(Mid(strParity,1))) If (i < 5) Then UPC5SUPP = UPC5SUPP + "/" End If Next i End Function
Public Function telepen(ByVal strToEncode As String) As String Dim charToEncode As String Dim charPos As Integer Dim checkSum As Integer Dim checkDigit As String Dim i As Integer
strToEncode = ascii2Char(strToEncode)
For i = 1 To Len(strToEncode) charToEncode = Mid(strToEncode,1) checkSum = checkSum + Asc(charToEncode) Next i checkDigit = Chr(127 - (checkSum Mod 127)) strToEncode = strToEncode + checkDigit
For i = 1 To Len(strToEncode) charToEncode = Mid(strToEncode,1) If (charToEncode = " ") Then telepen = telepen + "#" ElseIf (charToEncode = "#") Then telepen = telepen + Chr(176) ElseIf (charToEncode = "[") Then telepen = telepen + Chr(177) ElseIf (charToEncode = "]") Then telepen = telepen + Chr(178) ElseIf (Asc(charToEncode) >= 0 And Asc(charToEncode) <= 31) Then telepen = telepen + Chr(Asc(charToEncode) + 224) ElseIf (Asc(charToEncode) = 127) Then telepen = telepen + Chr(179) Else telepen = telepen + charToEncode End If Next i telepen = "[" + telepen + "]" End Function
Public Function telepenNum(strToEncode As String) As String Dim i As Integer Dim charToEncode As String Dim checkSum As Integer Dim checkDigit As String Dim charVal As Integer Dim mappingSet As String Dim charSet As String charSet = "0123456789" strToEncode = maskfilter(strToEncode,charSet) If Len(strToEncode) Mod 2 = 1 Then strToEncode = "0" + strToEncode For i = 1 To Len(strToEncode) Step 2 charToEncode = Mid(strToEncode,2) charVal = Val(charToEncode) + 27 mappingSet = mappingSet + Chr(charVal) Next i For i = 1 To Len(mappingSet) charToEncode = Mid(mappingSet,1) charVal = Asc(charToEncode) checkSum = checkSum + charVal Next i checkDigit = Chr(127 - (checkSum Mod 127)) mappingSet = mappingSet + checkDigit For i = 1 To Len(mappingSet) charToEncode = Mid(mappingSet,1) If (charToEncode = " ") Then telepenNum = telepenNum + "#" ElseIf (charToEncode = "#") Then telepenNum = telepenNum + Chr(176) ElseIf (charToEncode = "[") Then telepenNum = telepenNum + Chr(177) ElseIf (charToEncode = "]") Then telepenNum = telepenNum + Chr(178) ElseIf (Asc(charToEncode) >= 0 And Asc(charToEncode) <= 31) Then telepenNum = telepenNum + Chr(Asc(charToEncode) + 224) ElseIf (Asc(charToEncode) = 127) Then telepenNum = telepenNum + Chr(179) Else telepenNum = telepenNum + charToEncode End If Next i telepenNum = "[" + telepenNum + "]" End Function
Function Postnet(strToEncode As String) As String Dim i As Integer Dim charToEncode As String Dim checkSum As Integer Dim checkDigit As String Dim charSet As String
charSet = "0123456789" strToEncode = maskfilter(strToEncode,charSet) If Len(strToEncode) >= 0 And Len(strToEncode) < 5 Then While Len(strToEncode) < 5 strToEncode = strToEncode + "0" Wend ElseIf Len(strToEncode) > 5 And Len(strToEncode) < 9 Then While Len(strToEncode) < 9 strToEncode = strToEncode + "0" Wend ElseIf Len(strToEncode) > 9 And Len(strToEncode) < 11 Then While Len(strToEncode) < 11 strToEncode = strToEncode + "0" Wend ElseIf Len(strToEncode) > 11 Then strToEncode = Left(strToEncode,11) End If
For i = 1 To Len(strToEncode) charToEncode = Mid(strToEncode,1) If IsNumeric(charToEncode) Then Postnet = Postnet + charToEncode checkSum = checkSum + Val(charToEncode) End If Next i checkSum = checkSum Mod 10 If checkSum <> 0 Then checkSum = 10 - checkSum checkDigit = Chr(checkSum + Asc("0")) Postnet = "[" + Postnet + checkDigit + "]" End Function
Public Function pdf417(ByVal strToEncode As String) As String Dim retval On Error GoTo clearmem Dim strTemp strTemp = ascii2Char(strToEncode) cruflBCSObj = CreateObject("cruflBCS.PDF417.1") cruflBCSObj.MaxRows = 8 cruflBCSObj.SetCRLF (1) retval = cruflBCSObj.EncodeCR(strTemp,"0") pdf417 = retval clearmem: cruflBCSObj = Nothing End Function
Public Function datamatrix(ByVal strToEncode As String) As String Dim retval On Error GoTo clearmem Dim strTemp strTemp = ascii2Char(strToEncode) cruflBCSObj = CreateObject("cruflBCS.DataMatrix.1") cruflBCSObj.SetCRLF (1) retval = cruflBCSObj.EncodeCR(strTemp,"0") datamatrix = retval clearmem: cruflBCSObj = Nothing End Function
Public Function semidatamatrix(ByVal strToEncode As String) Dim retval On Error GoTo clearmem Dim strTemp strTemp = ascii2Char(strToEncode) cruflBCSObj = CreateObject("BCSSEMIDataMatrix.BCSSEMIDM.1") retval = cruflBCSObj.Encode(strTemp) semidatamatrix = retval clearmem: cruflBCSObj = Nothing End Function
Public Function qrcode(ByVal strToEncode As String) As String Dim retval On Error GoTo clearmem Dim strTemp strTemp = ascii2Char(strToEncode) cruflBCSObj = CreateObject("cruflBCS.QRCode.1") cruflBCSObj.SetCRLF (1) cruflBCSObj.ECLevel = 1 retval = cruflBCSObj.EncodeCR(strTemp,"0") qrcode = retval clearmem: cruflBCSObj = Nothing End Function
Public Function code16k(ByVal strToEncode As String) As String Dim retval On Error GoTo clearmem Dim strTemp strTemp = ascii2Char(strToEncode) cruflBCSObj = CreateObject("cruflBcS.Code16K.1") cruflBCSObj.SetCRLF (1) retval = cruflBCSObj.Encode(strTemp) code16k = retval clearmem: cruflBCSObj = Nothing End Function
Public Function USSCode128(strToEncode As String) As String Dim checkDigit As String
strToEncode = ascii2Char(strToEncode)checkDigit = MOD10(strToEncode)strToEncode = strToEncode + checkDigitUSSCode128 = Code128B(strToEncode)End Function (编辑:李大同)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|