VBA – Gravar em arquivo de texto

Written by

Editorial Team

Reviewed by

Steve Rynearson

Translated by

Daniel Caramello

Last updated on May 24, 2023

Este tutorial demonstrará como gravar em arquivos de texto usando o VBA.

Gravação em um Arquivo de Texto

Os códigos abaixo usam o FileSystemObject (saiba mais). Para usá-lo, você precisará definir uma referência à biblioteca de tempo de execução do script VB.

Gravar em um Novo Arquivo de Texto

Com o comando CreateTextFile de FileSystemObject, você pode criar e adicionar conteúdo a um arquivo de texto:

Sub FSOCriarGravarEmArquivoTexto() 
    Dim FSO As New FileSystemObject
    Set FSO = CreateObject("Scripting.FileSystemObject")
    Set FileToCreate = FSO.CreateTextFile("C:\Test\TestFile.txt")

    FileToCreate.Write "linha teste"
    FileToCreate.Close

End Sub

Observe que o conteúdo não será colocado entre aspas.

Gravação em Arquivo de Texto Existente

Para gravar em um arquivo de texto existente, você pode usar o comando OpenTextFile do FileSystemObject com o modo ForWriting.

Sub FSOGravarEmArquivoTexto() 
    Dim FSO As New FileSystemObject
    Set FSO = CreateObject("Scripting.FileSystemObject")
    Set FileToWrite = FSO.OpenTextFile("C:\Test\TestFile.txt", ForWriting)

    FileToWrite.Write "linha teste"
    FileToWrite.Close

End Sub

Observe que você não precisa necessariamente do FileSystemObject para gravar em um arquivo de texto existente. O exemplo acima é mostrado de outra forma no código abaixo (veja outro exemplo na seção Intervalo de Dados para Arquivo de Texto):

Sub GravarEmArquivoTexto()
    Dim FileName As String
    FileName = "C:\Test\TestFile.txt"

    Open FileName For Output As #1
    Print #1, "linha teste"
    Close #1

End Sub

Observe que o uso do comando Write em vez de Print fará com que o conteúdo adicionado seja colocado entre aspas. Ter os dois comandos em sua macro

Write #1, "linha teste #1"
Print #1, "linha teste #2"

resultará em um arquivo de texto como este:

saida arquivo texto

Adicionar ao Arquivo de Texto

Ao alterar o modo no código acima para ForAppending, uma linha pode ser adicionada ao final do arquivo de texto:

Set FileToWrite = FSO.OpenTextFile("C:\Test\TestFile.txt", ForAppending)

Método WriteLine

Esse método acrescenta a sequência de caracteres de entrada como uma linha separada ao conteúdo existente.

Método Write

A sequência de caracteres de entrada é anexada na mesma linha que o conteúdo existente.

WriteBlankLines

Esse método usa como parâmetro o número de linhas em branco a serem gravadas no arquivo de texto.

O código abaixo ilustra a diferença entre os diferentes métodos de gravação:

Sub MetodosWrite()
    Dim FSO As New FileSystemObject
    Set FSO = CreateObject("Scripting.FileSystemObject")
    Set FileToWrite = FSO.OpenTextFile("C:\Test\TestFile.txt", ForAppending)

    FileToWrite.Write "linha teste #1 "
    FileToWrite.Write "linha teste #2"
    FileToWrite.WriteBlankLines (3)
    FileToWrite.WriteLine "linha teste #3"
    FileToWrite.WriteLine "linha teste #4"
    FileToWrite.Close

End Sub

E o resultado:

saida arquivo texto metodos

Intervalo de Dados em Arquivo de Texto

Se quiser enviar um intervalo de dados da planilha para um arquivo de texto, você pode usar este código:

Sub SaidaParaArquivoTexto()
    Dim FileName As String, LineText As String
    Dim MyRange As Range, i, j
    
    FileName = "C:\Test\TestFile.txt" 'você pode especificar aqui o nome do arquivo de texto que deseja criar
    
    Open FileName For Output As #1
    
    Set MyRange = Range("data") 'ele pressupõe que você tenha um intervalo de dados chamado "data" em sua planilha
    For i = 1 To MyRange.Rows.Count
        For j = 1 To MyRange.Columns.Count
            LineText = IIf(j = 1, "", LineText & ",") & MyRange.Cells(i, j) 'o arquivo de texto criado terá um separador de vírgula
        Next j
        Print #1, LineText 'O uso do comando Write em vez de Print fará com que seus dados fiquem entre aspas no arquivo de texto de saída
    Next i

    Close #1

End Sub

Matriz para Arquivo de Texto

Também é possível salvar a matriz de dados em um arquivo de texto da seguinte forma:

Sub SalvarMatrizParaArquivoTexto()
    Dim MyArray As Variant
    Dim FSO As New FileSystemObject
    Set FSO = CreateObject("Scripting.FileSystemObject")

    MyArray = Array(Array("00", "01"), Array("10", "11"), Array("20", "21"))

    Set FileToCreate = FSO.CreateTextFile("C:\Test\TestFile.txt")

    For n = 0 To UBound(MyArray)
        FileToCreate.WriteLine MyArray(n)(0) & "," & MyArray(n)(1)
    Next
    
    FileToCreate.Close

End Sub
vba-free-addin

Exemplos de Add-ins de Códigos VBA

Acesse facilmente todos os exemplos de código que se encontram em nosso site.

Simply navigate to the menu, click, and the code will be inserted directly into your module. .xlam add-in.

(Nenhuma instalação necessária!)

Baixe de Graça

Retornar aos Exemplos de Códigos VBA