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:

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.


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.
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:

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.
Permalink
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.
Permalink
Nelson. Vai depender da complexidade do seu sistema.