Boleto Bancário do Itaú - Código de barras sem OCX
Nota importante: para ter acesso aos vídeos e arquivos exemplos deste site, adquira um dos planos apresentados abaixo. Você pode comprar em até 5x no Cartão de Crédito, através do Paypal.
Veja como comprar e saiba mais sobre o material oferecido, clicando aqui.
Estava precisando montar um aplicativo no Access que gerasse boletos do banco Itaú. A única pedra no sapato desse projeto era o fato de que eu tinha que utilizar um arquivo OCX para gerar o código de barras e isso em versões de 64 bits poderia não funcionar.
A solução para escapar do uso de arquivo OCX seria tentar trazer para o Access a idéia de um projeto feito em ASP, que usava imagens das barras, devidamente enfileiradas para montar o código de barras.
Código de barras com imagens:
São utilizadas quatro barras como padrão, sendo duas pretas e duas brancas. Duas, na largura de 1 pixel e as outras duas, na largura de 3 pixels.
Observe na figura abaixo as 4 barras:
O método Picture foi usado para carregar as imagens (barras) nos Controles de Imagens.
Me!CampoImagem.Picture = CurrentProject.Path & "\imagens_boleto\3b.gif
O desafio no Access
Para ajustar a largura do Controle de Imagem, precisamente na largura das barras (1 pixel ou 3 pixels) é utilizada a propriedade Width.
'1 pixel equivale a 15 Twips (medida do VBA)
Const px1 = 15 '1 pixel Const px3 = 45 '3 pixels
Me!CampoImagem.Width = px1 (ou px3)
Tendo a largura de cada Controle de Imagem (1 pixel ou 3 pixels), basta ir somando e acumulando tais médias para obter o posicionamento à esquerda do Controle de Imagem seguinte, conseguindo assim, o alinhamento sequencial das barras. Observe na imagem abaixo:
O posicionamento à esquerda da terceira barra é a soma da primeira barra em
relação a margem (A), mais a largura da primeira barra
(B), mais a
largura da segunda barra (C).
Me!CampoImagem.Left = PosiçãoEsquerda
'armazenando a posição para o próximo Controle de Imagem
PosiçãoEsquerda = PosiçãoEsquerda + px1 (ou px3)
O código gerador do boleto possui 44 números, conforme exemplo sequencial abaixo:
34191595300000015001741000000169555033350000
Cada número da sequência é representado por 5 barras, o que nos dá um total de 220 barras (44 x 5)São utilizadas ainda, mais 4 barras para identificar o início da leitura e mais 3 barras para identificar o fim da leitura, totalizando 227 barras.
Então, duzentos e vinte e sete foi o número necessário de Controles de Imagens que tive que criar para a montagem do código de barras. Veja na imagem abaixo:
O Código
Analise o código utilizado no evento "Ao formatar" do boleto, que ajusta a largura e a posição à esquerda de cada Controle de Imagem:
Faça o login aqui para ter acesso ao código.
Veja na imagem abaixo, o resultado do código de barras, devidamente montado:
Gerando o Boleto no aplicativo exemplo
Ao rodar o aplicativo, será exibida a seguinte tela, mostrando o formulário Controle de Aluguéis:
Selecione o senhorio > selecione o inquilino > Clique no botão
"Gerar novo boleto" para o inquilino selecionado.
O formulário de preenchimento de boleto será exibido, conforme imagem abaixo:
Basta preencher a
data do documento, a data do vencimento e relacionar os itens dos
campos de instruções aos seus respectivos valores.
Então, ao término do preenchimento, ao clicar em "Imprimir Boleto" será visualizado o boleto para a impressão.
Uso do método LINE em vez das imagens (24/07/2013)
Um colega de fórum chamou a minha atenção para o fato de que eu poderia utilizar o método LINE, ao invés das imagens, pois desta forma, dispensaria o uso dos Controles de Imagens. Resolvi pôr em prática o LINE e o resultado foi ótimo, tornando tanto a montagem como a programação, bem mais simples.
Para quem quiser saber a fundo sobre o uso do LINE, clique aqui e veja o meu artigo.
Observe o código modificado como ficou:
Faça o login aqui para ter acesso ao código.
O uso do LINE está no relatório rltBoletoItaú_line do arquivo exemplo.
Download
Para entrar no modo estrutura, mantenha pressionada a tecla SHIFT na inicialização.
Para visualizar o Painel de Controle, utilize a tecla F11.
Nota: O exemplo aqui oferecido é para boleto sem registro. Caso necessite elaborar o seu boleto com registro e remessa, faça o download abaixo do arquivo do Itaú, que segue as instruções da Fenabran 240 de abril de 2013.
Bom estudo!
Os dez artigos mais visitados
MontaRibbons v.7.0 - Assistente completo para criar ribbons no Access
Vídeo - Controle personalizado de Acesso de Usuários
Vídeo - Aprenda sobre filtragens
Vídeo - Segurança máxima, usando o OPEN
Uma ajuda para quem está começando um negócio ou um projeto
Integrando o Access com Servidor MySQL - Introdução
Desabilitando a faixa(ribbon) superior do Access
Vídeo - Programação de relatórios - Parte 1
Como carregar o seu menu sem que ele vá para lista de suplementos
Adquira o kit UsandoAccess e aprenda em alta velocidade
52 comentários Avelino Sampaio 08/11/2022 06:58:07 Cleyton, não conheço. Nota: vai precisar também de gerar os ARQUIVOS REMESSA a partir de 2017. Aqui no site tem uma explicação sobre Arquivo Remesa para o Itaú. Bom estudo! Cleyton 05/11/2022 15:24:50 Boa tarde, Avelino Eu trabalhava com a dll de boletos da Cobrebem no access, porem o preço da mesma ficou inviável. Vc conhece alguma dll para boleto, com exemplos de uso no access? Uso a dll para gerar os boletos, pois cada cliente trabalha com um banco, Dae fica mais fácil a configuração do mesmo. JBSR 28/09/2022 15:18:23 Obrigado. Att Avelino Sampaio 18/09/2022 06:12:10 JBSR, tenho da CEF que se encontra na seção DICAS do site. Copie e cole o link abaixo no seu navegador: http://www.usandoaccess.com.br/dicas/boleto-caixa-economica-formato-pdf.asp?id=1&idlista=143#inicio Bom estudo! JBSR 17/09/2022 21:49:08 Avelino, tem essa logista para outros bancos, como o Bradesco e CEF? Avelino Sampaio 12/09/2022 09:46:51 Eduardo, mandei um e-mail com um link, para vc atualizar o Office 2007, com o pacote SP3 da Microosft. No aguardo Eduardo 12/09/2022 09:07:21 O arquivo de exemplo em zip so da que o arquivo nao e um banco de dados reconhecido Eduardo 21/08/2022 13:46:32 Avelino, boa tarde. Muito obrigado. Era exatamente isso. Resolvido. Avelino Sampaio 12/08/2022 10:03:58 Eduardo, provavelmente vc tem um valor assim: 583,178587 Utilize a função Round() para arredondar em duas casas decimais. Exemplo: round(583.178587,2) :::> 583,18 Sucesso! Eduardo Ortega 11/08/2022 15:19:46 Avelino, como vai? Seu site continua me ensinando muito. Obrigado. O Banco Itaú desativará a carteira 175 para recebimento de boletos, e fui obrigado a migrar para a carteira 109. Testei e homologuei os boletos gerados pelo seu sistema e tudo parecia funcionar bem. Porém... Em pelo menos 3 boletos (em 97 emitidos), o valor do boleto era diferente do constante na linha digitável, ao que parecer, pelo menos no último número. Exemplo: 34191.09008 01510.830357 07047.300004 5 65160000058317 para um boleto de valor R$ 583,18. Você tem alguma ideia de como posso resolver isso? Os demais boletos foram impressos e liquidados normalmente. Forte abraço. Andre 02/05/2022 02:21:08 Boa noite Avelino estava eu procurando um programa que fizesse boleto pra implantar aqui no meu condomínio achei seu trabalho e gostei muito. O problema que no meu caso não preciso que o boleto seja bancário e que os dizeres senhorio, aluguel e inquilino também não se aplica as minhas necessidades aqui usamos os termos Sindico, taxa de condominio e Condonomo ou simplesmente Morador. Fis as mudanças nas planilhas e troquei esses dizeres mas quando tendo exultar o banco de dados da erro no formulário aluguel então tentei abrir esse formulario afin de tenta editá-lo então me retorna o seguinte (erro alugueis nao pode abrir o arquivo c:\aluguei\imagens_boleto\ws.gif.). Sinceramente gostaria muito de usar seu trabalho aqui no meu condominio mas não consegui fazer essas alterações, sei tambem que não é seu trabalho mas se você quiser me dar uma luz de como fazer isso serei grato a você e pode ter serteza que seria de grande valia pra nós. Avelino Sampaio 27/04/2022 02:47:26 Aguinaldo, creio que não, pois a sequencia do código de barras segue uma padronização dos bancos. Sugiro uma leitura deste artigo: https://msdn.microsoft.com/pt-br/library/cc580676.aspx Copie e cole o link acima no seu navegador. Nota: Utilize também o nosso fórum, para tirar dúvidas: http:/www.redeaccess.com.br Bom estudo! Aguinaldo 26/04/2022 06:29:32 Boa Tarde Avelino, Tenho um sistema que gera uma numero de operação de 06 digitos, gostaria de transfomar em código de barra. da para alterar a função para gera o código? Avelino Sampaio 02/03/2022 06:27:24 Valter, observe no final do artigo que disponibilizo o cnab240. Explique o que vc exatamente deseja. Aguardamos valter 01/03/2022 18:13:26 existe algum material pronto para cnab240 itau considerando os dados do boleto itau Renato 31/01/2022 11:31:33 Obrigado que Deus abecoe Héverson Mota 30/01/2022 23:56:06 Avelino, tenho que te pagar um chopp! Avelino Sampaio 25/01/2022 10:30:53 Daniel, o projeto está aberto. Mantenha pressionada a tecla SHIFT na inicialização e vc entra na estrutura do aplicativo. Sucesso! Daniel 25/01/2022 09:22:38 oi Avelino gostaria de saber como posso usar este modelo nos meus projecto? Rogiel Pereira Silv 30/12/2021 19:48:19 Boa Noite Avelino Fiz as adaptações necessárias e esta funcionando, mais esta acontecendo que não consigo adicionar a Data do Documento, Data de Vencimento, Data de Pagamento e Opção Pago. O que devo fazer? Avelino Sampaio 22/11/2021 07:39:47 Lucas, fiz uma simulção aqui e não apresentou este problema. Minha impressora é uma Epson. O exemplo oferece dois métodos para montagem da barra. O problema acontece para os dois métodos (uso imagens e o uso do LINE) ? No aguardo Lucas 21/11/2021 16:05:47 Avelino, sabes me dizer por que quando imprimo pelo botão de impressão rápida o código de barras é impresso e quando apertando control + p não? Muito bom seu exemplo. Avelino Sampaio 09/10/2021 09:00:54 Vanderlan, os artigos e os vídeos agora estão disponíveis somente para quem adquirir a Coletânea do site. Quanto ao capturar as duas informações vc pode criar um código no campo que recebe os valores e então usar a função Split(), para dividir as informações entre os campos. Sucesso! Vanderlan 08/10/2021 16:58:25 Boa tarde Avelino. Gostaria de saber se vc continua disponibilizando downloads avulsos como exemplos. Ao clicar no link acima, é redirecionado para a página principal e não para o download. Gostaria, se possível, de um exemplo, em VBA, de captura do código de barra contendo duas informações e o lançamento das mesmas em dois campos distintos. Agradeço pela atenção. Avelino Sampaio 18/09/2021 09:34:21 William, seu 2007 está com o pacote sp2 ou sp3 ? Se não tiver, baixe a atualização direto do site da Microsoft. No aguardo William Lucena Bandeira 18/09/2021 09:02:29 baixei arquivo : BoletoItau.zip ao abrir dá erro arquivo accdb desconhecido estou com access 2007 instalado Eduardo Utyiama 21/08/2021 13:43:13 Boa tarde a todos: Em resposta ao amigo Marcelo Silva, conforme citado "...antes dos números ou letras que compunham o código de barra eu deveria adicionar *, e no final do código de barra fechar novamente com *", você está utilizando o tipo Code39 (alfanumérico). O exemplo criado pelo mestre Avelino Sampaio é o I25 (intercalado 2/5, ou seja, a cada 5 barras, 2 são pretas), exclusivamente numérico. Você poderá utilizar a metodologia apresentada pelo mestre seguindo duas condições: 1. O crachá de identificação seja exclusivamente numérico, retirando o asterisco "*"; 2. Seu leitor de código de barras esteja habilitado para leitura do código I25. Pela minha experiência no ramo industrial, em fábricas, é comum a utilização da codificação 39 na confecção de código de barras justamente pela flexibilidade de utilizar caracteres alfanuméricos e especiais. Tendo conhecimento em programação VBA, poderá adaptar em seu projeto a solução apresentada por James Isle Mercanti e muito difundida entre usuários do MS Access. Apesar de preferir utilizar a codificação nativa do VBA com ".Line" e "-Step" para "desenhar" as barras, elas dão mais trabalho. Com as fontes TTF, mesmo necessitando de uma função para codificar os caracteres, sua utilização é mais simples, inclusive, quanto ao ajuste de tamanho, bastando apenas alterar o tamanho da fonte. Ou seja, existem várias alternativas... Cabe a você decidir qual delas melhor se adapta às ferramentas que dispõe. Em tempo: Parabéns, mestre Avelino! Sempre surpreendendo e inovando em cada Post! Ronaldo Costa 10/08/2021 08:41:46 não poderia de deixar os meus cumprimentos, pois, as vezes, parece que o Avelino tem uma bola de cristal. De repente ele aparece com soluções que supre as necessidades que alguns estão vivenciando no momento. Parabéns e obrigado. Helena 01/08/2021 17:24:18 Boa tarde Avelino, Preciso fazer uma busca de nomes em duplicidade em uma planilha excel pode me dar uma ajuda? Abraço. Marcio Melo - RJ 27/07/2021 13:18:32 Boa tarde! a todos... Solução profissionais e bem completas; fiquei super feliz em saber da interação entre usuários e mestre Avelino e assim enriquecer ainda mais o site. Parabéns pela solução limpa e eficaz, sempre precisamos destes exemplos, essa parte do LINE no artigo sobre seu uso a faço até hoje para ter bordas externas nos documentos nem imaginava que tinha esse potencial a mais. Forte abraço; fantástica essa equipe... Sou mais Brasil! Avelino Sampaio 26/07/2021 09:17:01 Gilson Batista, boa parte poderá ser aproveitado sim, principalmente a técnica apresentada para montagem do Código de Barras. Copie e cole no seu navegador o endereço abaixo, que mostra os modelos para cada banco. Verá que todos seguem praticamente uma mesma padronização. http://www.netdinamica.com.br/boleto/teste-boleto.php Se eu não me engano, a documentação com as instruções da CAIXA, você pega no link abaixo. Copie e cole o link no seu navegador. http://www1.caixa.gov.br/download/index.asp Sucesso! Paulo Farias 25/07/2021 16:09:50 Boa tarde Avelino, Muinto obrigado por compartilhar seus artigos. Helena 25/07/2021 07:26:59 Bom dia Avelino, Obrigada por compartilhar todos seus artigos. Avelino Sampaio 24/07/2021 17:20:21 Quero agradecer ao colega GILMAR CAETANO que me deu a preciosa dica de utilizar o método LINE do relatório, possibilitando assim um estrutura mais limpa e um código mais simples. Sucesso! Marcelo Silva 24/07/2021 11:15:07 Bom dia! Ja alguns dias atrás tive que criar etiquetas de separação para uma operação da Coca-Cola onde trabalho, eu precisa exatamente de um código de barra pois a parti deste código de barra eu iria gerar a produtividade de cada auxiliar. Exemplo: O Auxiliar viria até a bancada onde estavas a lista das etiquetas de separação por carro, pegaria o cracha e passaria em um leito de código de barra para identificar o colaborador e depois passaria na frente do leitor o código de barra da etiqueta. O problema que na empresa tudo e muito restrito, eu nao queria usar DLL para gerar estes códigos e nem dominava este exemplo de atribuir imagens, a solução que encontreu foi buscar fonte de letra para gerar os códigos. Encontrei varias fontes mas nenhum funcionava com o leitor que eu tinha, fiz varios testes, adicionei varias fontes e nada. Até que encontrei em um forum a resposta para o meu problema, o leitor não reconhecia o código de barra pois o formato das letras não era identificados, para que o leitor fizesse a leitura de forma correta da fonte, antes dos números ou letras que compunham o código de barra eu deveria adicionar *, e no fibal do código de barra fechar novamente com * Para este problema acima, eu não conseguiria usar esta mesma metodologia sabendo qual a fonte usada pelo Itau? Helena 23/07/2021 07:20:10 Olá Avelino bom dia tudo bem? Preciso migrar um banco de dados do Access para outro sistema não tenho noção de como começar, qual seria o primeiro passo para fazer isso? poderia me ajudar? Grata, Marcelo 22/07/2021 20:48:16 Cada vez mais você nos surpreende com seus projetos, fico feliz de saber que tem alguém como você que nos mostra o caminho das pedras em nossos desafios. Muito obrigado. Quando li seu artigo me veio uma duvida, tenho um aplicativo que gerência honorários contábeis, quando e finalizado os honorários e digitado no sistema próprio do banco para gerar os boletos, isso da retrabalho danado. É possível através do ACCESS receber o retorno do banco referente os boletos pagos? Ou seja, quando fazemos o boleto no sistema do banco recebemos o retorno no próprio aplicativo, se recebermos o retorno através do próprio ACCESS seria possível dar baixas automática nos boletos, ficaria muito legal, manualmente sei que é possível, ou seja, pegar o arquivo colocar em uma pasta especifica e fazer a leitura do mesmo através do VBA. GILSON BATISTA DE OLIVEIRA 22/07/2021 19:18:59 Excelente trabalho Avelino, tenho um sistema de gerenciamento de escritório de contabilidade e utilizo os boletos da CAIXA em um aplicativo fornecido por eles, mas gostaria de emitir os boletos direto de meu sistema. Este boleto do ITAU pode ser aproveitado para CAIXA ou teria algum modelo de boletos da CAIXA. Desde já agradeço. E-mail: atendimento@gcontabil.com.br Balemberg 22/07/2021 18:29:04 Olá Avelino Se soubesse que você estava atrás de um código sem OCX para fazer o código de Barras, teria te enviado o que eu uso. Como deve ter percebido, o trabalho está em criar o código para cada banco, já que cada um teu seu critério para a confecção do mesmo. Se caso não tenha ido muito a fundo sobre a criação do código de barras e a linha digitável dos boletos, lembro que os bancos tem 2 tipos( espero que ainda seja isso) de códigos para boletos. Como faz muito tempo que criei esses código (Acc97) não me lembro os nomes Portanto, o programador DEVE ir conversar com o gerente do banco em questão, o qual entregará um manual ou o encaminhará ao pessoal de TI do banco. Mas você não só achou como caminho no CAMINHO DAS PEDRAS ^^ Abraços Avelino Sampaio 22/07/2021 17:34:58 Harysonhn, está em conformidade com o dados técnicos do Itaú. Sou correntista e já uso este projeto a bastante tempo pelo meu site. Todos as funções de verificação se encontram no módulo "mod_boleto_itau" Sucesso! Harysohn 22/07/2021 17:29:02 Boa tarde grande Avelino, uma pergunta: o código de barras no sistema está sendo gerado em conformidade com os dados técnicos do Itaú? Acredito que sim.. e neste caso o código está gerando os códigos com seus respectivo Digito de autoconferência?, para o nosso número por exemplo... Grato. samuel 22/07/2021 16:45:45 Muito bom! Como sempre...se superando! Marcelo David 22/07/2021 15:37:22 Fenomenal! Espetacular! Muito bom, estava precisando exatamente do boleto do Itaú para um grande projeto que vou desenvolver (isso vai me poupar horas, dias de trabalho)! Parabéns mais uma vez por essa contribuição e todas as demais!! Avelino Sampaio 10/04/2021 06:58:34 Eduardo, procure pelo meu amigo Jeferson no site www.kartoffel.com.br Sucesso! EDUARDO LUIZ ORTEGA 09/04/2021 12:56:59 Avelino, muito obrigado pela sua sempre didática resposta. Aproveitando: você tem ou conhece algum módulo para gerar as NFS-e (nota fiscal de serviços paulistana)??? Não é a do Estado, mas a da Prefeitura de São Paulo. Felicidades. Avelino Sampaio 09/04/2021 07:42:50 Eduardo, diminua ou aumente proporcinalmente a medidadas 14175 e 14927 Me.Line (PosiçãoEsquerda, 14175)-(PosiçãoEsquerda + IIf(Left(sgif, 1) = "3", px3, px1), 14927), IIf(bbar = True, vbBlack, vbWhite), BF 14175 significa que está a 25 cm do topo. O cetimentro no VBA vale 567 :::> (14175/567) = 25 Sucesso! EDUARDO LUIZ ORTEGA 08/04/2021 09:45:53 Avelino, bom dia. Não sou da área de TI nem programador, mas tenho o Access como meu hobby há mais de 20 anos. Todo o sistema de minha empresa foi feito por mim e já aprendi muito com você. A solução do Itaú foi a cereja do bolo em meu sistema. DÚVIDA: Gostaria de saber como baixar um pouco a posição do código de barras no formulário, pois vou mudar o lay out para incorporar a Nota Fiscal na parte superior da folha. Muito obrigado.... MESMO!!!! Julia 28/03/2021 10:15:33 Obrigado Avelino, o problema era com o número do banco. Valeu! Avelino Sampaio 28/03/2021 06:27:57 Julia, O erro pode estar no sequência. Verifique o tamanho da sequencia (43 caracteres). Utilize a função Msgbox() na função para poder verificar a sequencia. Function fncCalculaDVCodBarras(sequencia) Dim fator As Byte Dim Total Dim numero Dim resto Dim resultado Dim i As Integer msgbox sequencia fator = 2 Total = 0 For i = 43 To 1 Step -1 numero = Mid(sequencia, i, 1) ... ... Sucesso! Julia 27/03/2021 07:35:10 Avelino, Utilizei esse seu exemplo aqui na empresa onde trabalho, no lugar dos inquilinos utilizo os clientes, estava funcionando perfeitamente, não sei o motivo começa a dar erro no código (mod_boleto_Itau): ============================================================ Function fncCalculaDVCodBarras(sequencia) Dim fator As Byte Dim Total Dim numero Dim resto Dim resultado Dim i As Integer fator = 2 Total = 0 For i = 43 To 1 Step -1 numero = Mid(sequencia, i, 1) If fator > 9 Then fator = 2 End If numero = numero * fator Total = Total + numero fator = fator + 1 Next resto = Total Mod 11 resultado = 11 - resto If resultado >= 10 Or resultado = 0 Then fncCalculaDVCodBarras = 1 Else fncCalculaDVCodBarras = resultado End If End Function ============================================================ Em especial na linha que se refere: numero = numero * fator O que poderia ser? Muito estranho pois estava funcionando perfeitamente, e é a segunda vez que acontece. Na primeira vez eu apenas limpei as tabelas e voltou a funcionar, dessa vez não. Não sei mais que fazer. Obrigado. Julia GILBERTO TEIXEIRA 20/02/2021 16:21:09 DESENVOLVI UM QUE GERA EM HTML PARA VARIOS BANCOS, GERA E ANEXA AO OUTLOOK djalma 02/01/2021 11:29:02 É se aplicativo é bem mais pratico ,bem tudo fica mais simples é muito da hora. .. |