Prezados,
Fiz uma rápida pesquisa no fórum e não encontrei o que estou precisando.
Preciso gerar a linha digitável e o código de barras (só os números e não as barras) do boleto Santander.
Hoje estou usando algo assim:
BolSTD_Linha(CodBanco, AgConta, NossoNumero, Vencimento, Valor)
Mas quando gero ele não está completando os dados corretos. Segue o código completo para vossa análise. Caso tenham algum que já faça isso e puder me informar, ficarei grato.
Segue códigos:
Fiz uma rápida pesquisa no fórum e não encontrei o que estou precisando.
Preciso gerar a linha digitável e o código de barras (só os números e não as barras) do boleto Santander.
Hoje estou usando algo assim:
BolSTD_Linha(CodBanco, AgConta, NossoNumero, Vencimento, Valor)
Mas quando gero ele não está completando os dados corretos. Segue o código completo para vossa análise. Caso tenham algum que já faça isso e puder me informar, ficarei grato.
Segue códigos:
- Código:
Function GeraBoleto()
linha = BolSTD_Linha("033", "1234123", "4050012345678", "31/08/2015", "0")
Barra = BolSTD_Barra("033", "1234123", "4050012345678", "31/08/2015", "0")
MsgBox "Linha: " & linha & vbNewLine & "Barra: " & Barra, , "Teste Boleto"
End Function
Public Function BolSTD_Linha(ByVal txtbc As String, ByVal txtAg As String, ByVal txtNosso As String, ByVal txtVcto As String, ByVal txtValor As String)
Dim lin1 As String
Dim lin2 As String
Dim lin3 As String
Dim dv4 As String
Dim lin5 As String
Dim cod_barras As String
lin1 = txtbc & "99" & Left(txtAg, 4)
lin1 = lin1 & DV10(lin1)
lin1 = Left(lin1, 5) & "." & Right(lin1, 5)
lin2 = Right(txtAg, 3) & Left(txtNosso, 7)
lin2 = lin2 & DV10(lin2)
lin2 = Left(lin2, 5) & "." & Right(lin2, 6)
lin3 = Right(txtNosso, 6) & "0102"
lin3 = lin3 & DV10(lin3)
lin3 = Left(lin3, 5) & "." & Right(lin3, 6)
dv4 = DV11(txtbc & "9" & Format(DateDiff("D", "07/10/1997", txtVcto), "0000") & Format(txtValor * 100, "0000000000") & "9" & Left(txtAg, 7) & txtNosso & "0102")
cod_barras = txtbc & "9" & dv4 & Format(DateDiff("D", "07/10/1997", txtVcto), "0000") & Format(txtValor * 100, "0000000000") & "9" & Left(txtAg, 7) & txtNosso & "0102"
lin5 = Format(DateDiff("D", "07/10/1997", txtVcto), "0000") & Format(txtValor * 100, "0000000000")
BolSTD_Linha = lin1 & " " & lin2 & " " & lin3 & " " & dv4 & " " & lin5
txtCod_barras = cod_barras
TXTcOD = StringCodigoBarra(txtCod_barras)
End Function
Public Function BolSTD_Barra(ByVal txtbc As String, ByVal txtAg As String, ByVal txtNosso As String, ByVal txtVcto As String, ByVal txtValor As String)
Dim lin1 As String
Dim lin2 As String
Dim lin3 As String
Dim dv4 As String
Dim lin5 As String
Dim cod_barras As String
lin1 = txtbc & "99" & Left(txtAg, 4)
lin1 = lin1 & DV10(lin1)
lin1 = Left(lin1, 5) & "." & Right(lin1, 5)
lin2 = Right(txtAg, 3) & Left(txtNosso, 7)
lin2 = lin2 & DV10(lin2)
lin2 = Left(lin2, 5) & "." & Right(lin2, 6)
lin3 = Right(txtNosso, 6) & "0102"
lin3 = lin3 & DV10(lin3)
lin3 = Left(lin3, 5) & "." & Right(lin3, 6)
dv4 = DV11(txtbc & "9" & Format(DateDiff("D", "07/10/1997", txtVcto), "0000") & Format(txtValor * 100, "0000000000") & "9" & Left(txtAg, 7) & txtNosso & "0102")
cod_barras = txtbc & "9" & dv4 & Format(DateDiff("D", "07/10/1997", txtVcto), "0000") & Format(txtValor * 100, "0000000000") & "9" & Left(txtAg, 7) & txtNosso & "0102"
lin5 = Format(DateDiff("D", "07/10/1997", txtVcto), "0000") & Format(txtValor * 100, "0000000000")
'BolSTD_Linha = lin1 & " " & lin2 & " " & lin3 & " " & dv4 & " " & lin5
BolSTD_Barra = cod_barras
TXTcOD = StringCodigoBarra(txtCod_barras)
End Function
Function DV11(cod_bar As String) As Integer
Dim n As Integer
Dim i As Integer
cod_bar = Replace(cod_bar, "-", "")
n = 2
DV11 = 0
For i = Len(cod_bar) To 1 Step -1
DV11 = DV11 + Mid(cod_bar, i, 1) * n
If n = 9 Then
n = 1
End If
n = n + 1
Next
DV11 = 11 - IIf((DV11 Mod 11) = 0 Or (DV11 Mod 11) = 1, 10, (DV11 Mod 11))
End Function
Function DV10(campo As String) As Integer
Dim n As Integer
Dim i As Integer
campo = Replace(campo, "-", "")
n = 2
DV10 = 0
For i = Len(campo) To 1 Step -1
DV10 = DV10 + IIf(Mid(campo, i, 1) * n >= 10, CSng(Left(Mid(campo, i, 1) * n, 1)) + CSng(Right(Mid(campo, i, 1) * n, 1)), Mid(campo, i, 1) * n)
n = IIf(n = 2, 1, 2)
Next
DV10 = 10 - (DV10 Mod 10)
If DV10 = 10 Then
DV10 = 0
End If
End Function