Trabalhando com Arquivo Texto no Access VBA

Reading time: 6 minutes

Arquivo Texto no Access VBA: Aprenda como manipular dados

Neste tutorial você vai aprender como manipular Arquivo Texto no Access VBA. 😲

Dependendo do seu projeto que esteja desenvolvendo em Access, você poderá se deparar algum tipo com este tipo de funcionalidade. Pode ser para salvar uma informação importante de alguma alteração feita em seu banco de dados, ou até mesmo os dados do usuário que esteja logado na sua aplicação. A verdade é que existem vários motivos para você fazer isto…

Foi pensando nisso que criei este tutorial.💪

Mas antes de mais nada precisamos esclarecer alguns pontos antes de implementar a solução que vou discorrer aqui.

Lembre-se, quando trabalhamos com bibliotecas externas do Access, pode ser que a sua solução não funcione corretamente, caso a máquina aonde vá rodar a sua solução não contenha esta biblioteca.😢

Mas, fique tranquilo que vou mostrar como criar uma sintaxe para trabalharmos com Arquivo Texto no Access VBA, sem precisarmos de biblioteca!

Falaremos mais sobre ao longo deste tutorial!👌

Arquivo Texto no Access VBA: Fazendo referência a Bibliotecas

Normalmente quando fazemos referência a bibliotecas externas ao Access, temos que ter a ciência que estas bibliotecas estarão disponíveis na máquina do outro usuário que irá utilizar esta funcionalidade.

Digo isto porque já recebi várias pedidos de ajuda, dizendo que a integração com o Microsoft Excel ou com o Microsoft Outlook, funciona na máquina da pessoa que está programando, mas não funciona na máquina do usuário final.🤦‍♂️

Para você criar esta conexão com um Arquivo Texto no Access VBA, precisamos primeiramente fazer referência a biblioteca Microsoft Scripting Runtime, conforme imagem abaixo:

accessfacil.com

Arquivo Texto no Access VBA: Lendo o conteúdo de um arquivo texto

Após fazermos a referência biblioteca, podemos ter acesso a todos as Propriedades, Métodos do objeto FileSystemObject. Ele fornece acesso ao sistema de arquivos do computador. É usado para retornar um objeto TextStream que pode ser lido de ou gravado .

Suponhamos que eu tenha o arquivo Texto.txt localizado na minha área de trabalho e tenha as seguintes informações contidas nele:

Obs: Chamo atenção para a codificação que deve ser usada quando for salvar o arquivo texto. Obrigatoriamente deve ser do tipo ANSI, uma vez que os caracteres especiais, podem não ser lidos corretamente pelo código. Portanto, fique atento a esta alteração.

accessfacil.com
accessfacil.com

Agora eu desejo, através do Access exibir o conteúdo deste arquivo na Janela de Inspeção Imediata do VBA. Como devemos proceder?

Então para que possamos ler algo de um Arquivo Texto no Access VBA, temos que escrever a seguinte sintaxe:

Sub LerArquivoTexto()

    Dim strArquivo As String
    Dim objFso As FileSystemObject
    Dim stmArquivo As TextStream
    

    'Local da minha área de trabalho aonde está o arquivo Text.txt
    strArquivo = "C:\Desktop\Texto.txt"
    
    Set objFso = New FileSystemObject
    Set stmArquivo = objFso.OpenTextFile(strArquivo, ForReading)
    
    Debug.Print stmArquivo.ReadAll
    
    stmArquivo.Close
    Set stmArquivo = Nothing
    Set objFso = Nothing

End Sub

Veja que esta variável strArquivo recebe tanto o endereço da pasta e o nome do arquivo texto. Não esqueça deste detalhe que faz toda a diferença!😉

Neste procedimento as variáveis objFso e a stmArquivo foram instanciadas para acessarmos as propriedades e métodos da biblioteca Microsoft Scripting Runtime que fizemos referência. Esta variável stmArquivo nos permite criar uma conexão com o arquivo texto que está representado pela variável strArquivo.

Depois de instanciado, vamos ler o conteúdo do arquivo através do método OpenTextFile.

Este método possui 3 argumentos:

  • ForAppending: Aberto apenas para adicionar. Não permite sobrescrever o texto existente apenas escrevendo no final do arquivo;
  • ForReading: Abre o arquivo como somente leitura;
  • ForWriting: Abre o arquivo somente para gravação.

Como vamos apenas Ler o conteúdo do arquivo, vamos usar o argumento ForReading.

Após isso utilizamos o método ReadAll para exibir todo o conteúdo na Janela de Inspeção imediata.

Baixe o arquivo para Praticar!!👇👇👇

Faça download do Template deste Tutorial

Insira o seu endereço de e-mail abaixo para receber grátis o link para fazer download do arquivo.>

Fique tranquilo, seu e-mail está completamente SEGUROconosco!

Arquivo Texto no Access VBA: Escrevendo dados em um arquivo texto

Agora vamos escrever algo neste mesmo arquivo. Suponhamos que eu deseje escrever a palavra ‘Melancia’, com o seguinte código abaixo. Olha o que irá acontecer:

Sub EscreverArquivoTexto()

    Dim strArquivo As String
    Dim objFso As FileSystemObject
    Dim stmArquivo As TextStream
    

    'Local da minha área de trabalho aonde está o arquivo Text.txt
    strArquivo = "C:\Desktop\Texto.txt"
    
    Set objFso = New FileSystemObject
    Set stmArquivo = objFso.OpenTextFile(strArquivo, ForWriting)
    
    stmArquivo.Write "Melancia"
    
    stmArquivo.Close
    Set stmArquivo = Nothing
    Set objFso = Nothing

End Sub

Se você executar este código vai perceber que todo conteúdo será apagado e a palavra ‘Melancia’ será a única que estará dentro do arquivo. Isto ocorreu porque usamos o argumento ForWriting, que sobrescreve o conteúdo antes de incluir um novo.

Para que possamos incluir um novo item ao final do arquivo, temos que utilizar o argumento ForAppending e incluir uma linha em branco antes do novo dado, conforme código abaixo

Sub EscreverArquivoTexto()

    Dim strArquivo As String
    Dim objFso As FileSystemObject
    Dim stmArquivo As TextStream
    

    'Local da minha área de trabalho aonde está o arquivo Text.txt
    strArquivo = "C:\Desktop\Texto.txt"
    
    Set objFso = New FileSystemObject
    Set stmArquivo = objFso.OpenTextFile(strArquivo, ForAppending)
    
    stmArquivo.WriteBlankLines 1
    stmArquivo.Write "Melancia"
    
    stmArquivo.Close
    Set stmArquivo = Nothing
    Set objFso = Nothing

End Sub

Arquivo Texto no Access VBA: Escrevendo dados SEM FAZER referência a Bibliotecas

Agora vamos dar uma cara mais profissional a este código. Isto porque, temos que criar um código que seja funcional em qualquer máquina. Para isso vamos retirar a referência da biblioteca, conforme abaixo:

accessfacil.com

Agora vamos fazer uma adaptação ao código acima:

Sub EscreverArquivoTexto()
    Dim strArquivo As String
    Dim objFso As Object
    Dim stmArquivo As Object
    
    strArquivo = "C:\Users\rafao\Desktop\Texto.txt"
    
    Set objFso = CreateObject("Scripting.FileSystemObject")
    Set stmArquivo = objFso.OpenTextFile(strArquivo, ForAppending)
    
    stmArquivo.WriteBlankLines 1
    stmArquivo.Write "Uva"
    
    stmArquivo.Close
    Set stmArquivo = Nothing
    Set objFso = Nothing
End Sub

Repare que agora, fizemos referência ao objeto Object, que é uma forma genérica de trabalhamos com qualquer objeto no VBA. Fizemos isso tanto para acessar o arquivo (variável objFso), quanto para escrever, ler e gravar dados neste arquivo (variável stmArquivo).

O restante da sintaxe não altera.

Assim podemos executar este código em qualquer computador que não teremos problema!👍

Curso de Access VBA Completo: Do Básico ao Avançado.

Quer aprender a programar no Access? Clique na imagem abaixo:

Por fim, deixe seu comentário sobre o que achou, se usar este recurso e você também pode enviar a sua sugestão para os próximos posts.

2 comentários


  1. Boa tarde, espero que esteja todo bem sou de São Tomé fez um programa no Access e gostaria apreender como se deve fechar para abrir o novo ano.

    Responder

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *