none
Codigo de barra no excel RRS feed

  • Pergunta

  • Boa noite

    Usei o código abaixo no Excel para gerar código de barras, funciona, porem, aparece um zero (0) no penúltimo digito, não sei porque acontece isso.

    Private Text_Input As String
    Private Text_Raw As String
    Private End_Sequence As String
    Private Start_Code As String
    Private Stop_Code As String
    Private Function_1 As String
    Private F As Integer
    Private Text_Output As String
    Private Correct_Text As String
    Private Printable_Text As String
    Private Enc_Method As String
    Private PreCheckTotal As Long
    Private PreCheckVal As Integer
    Private Current_Val As Long
    Private Check_Val As Integer
    Private Switch As Integer
    Private I As Integer
    Private Check_Digit As Integer
    Private Current_Method As String
    Private New_Line As String
    Private This_Char As String
    Private This_CharNum As Integer
    Private Lead_Char As Integer
    Private AddOn_2 As String
    Private AddOn_5 As String
    Private AddOn_TextFinal As String
    Private HR_Text As String
    Private Text_Len As Integer
    'END OF DECLARACTIONS
    
    
    Public Function PrecisionID_ITF(Text_Input As String) As String
         End_Sequence = "  "
         Text_Output = ""
         Text_Input = RTrim(LTrim(Text_Input))
         Correct_Text = ""
         Text_Len = Len(Text_Input)
         For I = 1 To Text_Len
              If IsNumeric(Mid(Text_Input, I, 1)) Then Correct_Text = Correct_Text & Mid(Text_Input, I, 1)
         Next I
         Text_Input = Correct_Text
         If (Len(Text_Input) Mod 2) = 1 Then Text_Input = "" & Text_Input
         Start_Code = ChrW(203)
         Stop_Code = ChrW(204)
         Text_Len = Len(Text_Input)
         For I = 1 To Text_Len Step 2
              This_CharNum = Val((Mid(Text_Input, I, 2)))
              If This_CharNum < 94 Then Text_Output = Text_Output & ChrW(This_CharNum + 33)
              If This_CharNum > 93 Then Text_Output = Text_Output & ChrW(This_CharNum + 103)
         Next I
         PrecisionID_ITF = Start_Code & Text_Output & Stop_Code & End_Sequence
    End Function
    
    
    Public Function PrecisionID_MOD10(Text_Input As String) As String
    ' This is a general MOD10 function like the one required for EAN and UPC
         Correct_Text = ""
         Text_Len = Len(Text_Input)
         For I = 1 To Text_Len
            'Add all numbers to Correct_Text string
              If IsNumeric(Mid(Text_Input, I, 1)) Then Correct_Text = Correct_Text & Mid(Text_Input, I, 1)
         Next I
    '<<<< Generate MOD 10 check digit >>>>
         Switch = 3
         PreCheckTotal = 0
         Text_Len = Len(Text_Input)
         For I = Text_Len To 1 Step -1
        'Get the value of each number starting at the end
              This_CharNum = Mid(Text_Input, I, 1)
        'multiply by the weighting Switch which is 3,1,3,1...
        'and add the sum together
              PreCheckTotal = PreCheckTotal + This_CharNum * Switch
        'change Switch for next calculation
              Switch = 4 - Switch
         Next I
    'Find the Check_Digit by finding the smallest number that = a multiple of 10
         I = (PreCheckTotal Mod 10)
         If I <> 0 Then
              Check_Digit = (10 - I)
         Else
              Check_Digit = 0
         End If
         MOD10 = Str(Check_Digit)
    End Function

     o código digitado -

    651019000090360

    651019000074802

    651019000094030

    código de barra gerado -

    a fonte usada chama-se: PrecisionID ITF T04 DEMO

    Obrigado

    terça-feira, 2 de junho de 2015 00:26

Respostas

  •  This_CharNum = Val((Mid(Text_Input, I, 2)))

    Essa função, da maneira que foi feita, sempre pega de dois em dois caracteres pra converter.

    Um teste seria mudar o 2 acima pra 1 e ver o que dá... eu não consegui testar pois não achei essa fonte

    quarta-feira, 3 de junho de 2015 12:32

Todas as Respostas

  •  This_CharNum = Val((Mid(Text_Input, I, 2)))

    Essa função, da maneira que foi feita, sempre pega de dois em dois caracteres pra converter.

    Um teste seria mudar o 2 acima pra 1 e ver o que dá... eu não consegui testar pois não achei essa fonte

    quarta-feira, 3 de junho de 2015 12:32
  • boa noite

    fiz a modificação, veja como ficou

    além de mudar a sequencia dos números, acrescentou mais um zero a frente dos números.

    obrigado.  

    quarta-feira, 3 de junho de 2015 23:29