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 |