Äàííûé VBA-ìàêðîñ ïðåäíàçíà÷åí äëÿ ïîäãîòîâêè êîäîâûõ êîìáèíàöèé êîäà EAN13 äëÿ èõ ïîñëåäóþùåé ïå÷àòè øðèôòîì EanBwrP36Tt Normal.Ttf. Ìàêðîñ íóæíî ïîìåñòèòü â øàáëîí îò÷åòà «Áàçà MS Access» (ñì. ðàçäåë 15.3), èç êîòîðîãî áóäóò ïå÷àòàòüñÿ äîêóìåíû, êîäèðîâàííûå äàííûì êîäîì.
Public Sub EAN13CODE(Code, BarCode)''Ï/ïðîãðàììà êîäèðîâàíèÿ êîäîì EAN13'Dim R As DoubleDim A, B, C, ISPA = Array("0", "1", "2", "3", "4", "5", "6", "7", "8", "9")B = Array("A", "B", "C", "D", "E", "F", "G", "H", "I", "J")C = Array("a", "b", "c", "d", "e", "f", "g", "h", "i", "j")ISP = Array(Array("A", "A", "A", "A", "A", "A"), _ Array("A", "A", "B", "A", "B", "B"), _ Array("A", "A", "B", "B", "A", "B"), _ Array("A", "A", "B", "B", "B", "A"), _ Array("A", "B", "A", "A", "B", "B"), _ Array("A", "B", "B", "A", "A", "B"), _ Array("A", "B", "B", "B", "A", "A"), _ Array("A", "B", "A", "B", "A", "B"), _ Array("A", "B", "A", "B", "B", "A"), _ Array("A", "B", "B", "A", "B", "A"))'' Ïðîâåðêè
' I = Len(Code)If I = 12 Then''Ðàñ÷åò êîíòðîëüíîé öèôðû' CountParity = 0 'For I = 2 To 12 Step 2 'ñêëàäûâàåì
CountParity = CountParity + Int(Mid(Code, I, 1)) '÷åòíûå öèôðû
Next I ' CountNotParity = 0 'For I = 1 To 11 Step 2 'ñêëàäûâàåì
CountNotParity = CountNotParity + CInt(Mid(Code, I, 1)) 'íå÷åòíûå öèôðû
Next I 'ControlData = CountParity * 3 + CountNotParity 'Ñóììà öèôð íà ÷åòíûõ è íå÷åòíûõ ïîçèöèÿõ
R = ControlData / 10 'Ðåçóëüòàò äåëåíèÿ ÷åòíûõ è íå÷åòíûõ öèôð íà 10 If R - Int(R) = 0 Then 'Åñëè ÷èñëî êðàòíî 10 ControlData = 0 'òî êîíòðîëüíîå ÷èñëî íàéäåíî Else 'åñëè íåò, òîI = 0
Do 'äîïîëíÿåì
I = I + 1 '÷èñëî,
ControlData = ControlData + 1 'äî áëèæàéøåãî
R = ControlData / 10 'êðàòíîãî 10
If R - Int(R) = 0 Then ' ControlData = I Exit Do End If Loop ' End If ControlData = ControlData''Ñáîðêà øòðèõ-êîäà' j = CInt(Mid(Code, 1, 1)) '(13ýë) Èñïîëíåíèå öèôðîâûõ çíàêîâ BarCode = Chr(Asc(Mid(Code, 1, 1)) - 13) 'Ôëàã êîäà, öèôðà áåç øòðèõàBarCode = BarCode & "!" 'Êðàåâîé çíàê
BarCode = BarCode & (A(CInt(Mid(Code, 2, 1)))) '(12ýë) âñåãäà À
For I = 1 To 5 'Êîäèðóåì ñëåäóþùèå 5 ýëåìåíòîâIf ISP(j)(I) = "A" Then
BarCode = BarCode & (A(CInt(Mid(Code, I + 2, 1)))) 'ýëåìåíò À
ElseBarCode = BarCode & (B(CInt(Mid(Code, I + 2, 1)))) 'ýëåìåíò B
End If Next IBarCode = BarCode & "-" 'Ðàçäåëèòåëüíûé çíàê
For I = 8 To 12 'Êîäèðóåì ñëåäóþùèå 6 ýëåìåíòîâBarCode = BarCode & (C(CInt(Mid(Code, I, 1)))) '
Next IBarCode = BarCode & C(ControlData) 'Êîíòðîëüíàÿ öèôðà
BarCode = BarCode & "!" 'Êðàåâîé çíàê
Else'' åñëè ÷èñëî ïîçèöèé â êîäå íå 12'End IfEnd Sub
! Ñì. òàêæå: