VBA - Gravar em arquivo de texto

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

Gravar em um arquivo de texto

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

Gravar em um novo arquivo de texto

Com o CreateTextFile método de FileSystemObject você pode criar e adicionar conteúdo a um arquivo de texto:

123456789 Sub FSOCreateAndWriteToTextFile ()Dim FSO As New FileSystemObjectDefina FSO = CreateObject ("Scripting.FileSystemObject")Definir FileToCreate = FSO.CreateTextFile ("C: \ Test \ TestFile.txt")FileToCreate.Write "linha de teste"FileToCreate.CloseEnd Sub

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

Gravar em arquivo de texto existente

Para gravar em um arquivo de texto existente, você pode usar o OpenTextFile método de FileSystemObject com Para escrever modo.

123456789 Sub FSOWriteToTextFile ()Dim FSO As New FileSystemObjectDefina FSO = CreateObject ("Scripting.FileSystemObject")Set FileToWrite = FSO.OpenTextFile ("C: \ Test \ TestFile.txt", ForWriting)FileToWrite.Write "linha de teste"FileToWrite.CloseEnd Sub

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

123456789 Sub WriteToTextFile ()Dim FileName As StringFileName = "C: \ Test \ TestFile.txt"Abra o nome do arquivo para saída como # 1Imprimir # 1, "linha de teste"Fechar # 1End Sub

Observe que usar o comando Write em vez de Print resultará em ter o conteúdo adicionado entre aspas. Tendo ambos os comandos em sua macro

12 Escreva # 1, "linha de teste # 1"Imprimir # 1, "linha de teste # 2"

resultará em um arquivo de texto como este:

Programação VBA | O Code Generator funciona para você!

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

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

Método WriteLine

Este método anexa a string de entrada como uma linha separada ao conteúdo existente.

Método de Escrita

A string de entrada é anexada à mesma linha do conteúdo existente.

Cansado de procurar exemplos de código VBA? Experimente o AutoMacro!

WriteBlankLines

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

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

12345678910111213 Sub WriteMethods ()Dim FSO As New FileSystemObjectDefina FSO = CreateObject ("Scripting.FileSystemObject")Set FileToWrite = FSO.OpenTextFile ("C: \ Test \ TestFile.txt", ForAppending)FileToWrite.Write "linha de teste # 1"FileToWrite.Write "linha de teste # 2"FileToWrite.WriteBlankLines (3)FileToWrite.WriteLine "linha de teste # 3"FileToWrite.WriteLine "linha de teste # 4"FileToWrite.CloseEnd Sub

E o resultado:

Programação VBA | O Code Generator funciona para você!

Intervalo de dados para arquivo de texto

Se você deseja gerar um intervalo de dados de sua planilha para um arquivo de texto, pode usar este código:

12345678910111213141516171819 Sub OutputToTextFile ()Dim FileName As String, LineText As StringDim MyRange como intervalo, i, jFileName = "C: \ Test \ TestFile.txt" 'você pode especificar aqui o nome do arquivo de texto que deseja criarAbra o nome do arquivo para saída como # 1Defina MyRange = Range ("data") ', pressupõe que você tenha um intervalo de dados denominado “dados” em sua planilhaPara i = 1 para MyRange.Rows.CountPara j = 1 para MyRange.Columns.CountLineText = IIf (j = 1, "", LineText & ",") & MyRange.Cells (i, j) 'o arquivo de texto criado terá um separador de vírgulaPróximo jPrint # 1, LineText 'usando o comando Write em vez de Print resultará em ter seus dados entre aspas no arquivo de texto de saídaProximo euFechar # 1End Sub

Matriz para arquivo de texto

Você também pode salvar sua matriz de dados em um arquivo de texto como este:

12345678910111213141516 Sub SaveArrayToTextFile ()Dim MyArray As VariantDim FSO As New FileSystemObjectDefina FSO = CreateObject ("Scripting.FileSystemObject")MyArray = Array (Array ("00", "01"), Array ("10", "11"), Array ("20", "21"))Definir FileToCreate = FSO.CreateTextFile ("C: \ Test \ TestFile.txt")Para n = 0 para UBound (MyArray)FileToCreate.WriteLine MyArray (n) (0) & "," & MyArray (n) (1)PróximoFileToCreate.CloseEnd Sub
wave wave wave wave wave