Este tutorial demonstrará como ler o conteúdo de arquivos de texto e colá-lo em planilhas com o VBA.
Ler o conteúdo do arquivo de texto na planilha
A maneira mais simples de ler o conteúdo de um arquivo de texto é copiá-lo para a célula de uma planilha.
123456789101112 | Sub FSOPasteTextFileContent ()Dim FSO As New FileSystemObjectDefina FSO = CreateObject ("Scripting.FileSystemObject")Set FileToRead = FSO.OpenTextFile ("C: \ Test \ TestFile.txt", ForReading) 'adicione aqui o caminho do seu arquivo de textoTextString = FileToRead.ReadAllFileToRead.CloseThisWorkbook.Sheets (1) .Range ("A1"). Value = TextString 'você pode especificar a planilha e a célula onde colar o conteúdo do arquivo de textoEnd Sub |
O código acima usa o FileSystemObject. Para usá-lo, você precisará definir uma referência para a biblioteca de tempo de execução do script VB. Veja aqui para mais informações.
Sem usar FileSystemObject, você pode colar o conteúdo do seu arquivo de texto com o código abaixo. Se o seu arquivo de texto contiver separador de linha, ele será colado linha por linha.
123456789101112 | Sub PasteTextFileContent ()Dim wbExcel As Workbook, wbText As WorkbookDim wsExcel como planilhaDefinir wbExcel = ThisWorkbook 'especifica aqui em qual arquivo Excel o conteúdo do arquivo de texto deve ser coladoDefina wsExcel = wbExcel.Sheets (1) 'especifique aqui qual planilha usarSet wbText = Workbooks.Open ("C: \ Test \ TestFile.txt") 'adicione aqui o caminho do seu arquivo de textowbText.Sheets (1) .Cells.Copy wsExcel.CellswbText.Close SaveChanges: = FalseEnd Sub |
Ler o conteúdo do arquivo de texto linha por linha, coluna por coluna
Seu arquivo de texto pode ter várias linhas e vários elementos listados nas linhas separados por vírgula, ponto e vírgula, tabulação, espaço, etc … Para ler e colar o conteúdo do arquivo de texto corretamente, você pode precisar deste código abaixo:
1234567891011121314151617181920212223242526 | Sub PasteTextFileContentWithSeparators ()Dim StrLine As StringDim FSO As New FileSystemObjectDim TSO as ObjectDim StrLineElements As VariantDim Index As LongDim i enquantoDim Delimitador como StringDefina FSO = CreateObject ("Scripting.FileSystemObject")Defina TSO = FSO.OpenTextFile ("C: \ Test \ TestFile.txt")Delimitador = "," 'o delimitador que é usado em seu arquivo de textoÍndice = 1Fazer enquanto TSO.AtEndOfStream = FalseStrLine = TSO.ReadLineStrLineElements = Split (StrLine, Delimiter)Para i = LBound (StrLineElements) para UBound (StrLineElements)Cells (Index, i + 1) .Value = StrLineElements (i) 'este código começará a colar o conteúdo do arquivo de texto da célula A1 (Cell (1,1)) da planilha ativaProximo euÍndice = Índice + 1CicloTSO.CloseEnd Sub |
O delimitador usado em seu arquivo de texto pode ser vírgula (“,”), vírgula com espaço (“,“), ponto e vírgula (“;”), ponto e vírgula com espaço (“;“), espaço (““), tabulação (mude então Delimitador = vbTab) ou em casos raros, qualquer outro caractere.
Ler arquivos de texto em matrizes
Se você precisa ler o conteúdo do seu arquivo de texto em uma matriz e colá-lo linha por linha, coluna por coluna em sua planilha, você precisará deste código abaixo:
12345678910111213141516171819202122232425262728293031323334 | Sub ReadDelimitedTextFileIntoArray ()Dim Delimiter As StringDim TextFile As IntegerDim FilePath As StringDim FileContent As StringDim LineArray () As StringDim DataArray () As StringDim TempArray () como stringDim rw As Long, col As LongDelimiter = vbTab 'o delimitador que é usado em seu arquivo de textoFilePath = "C: \ Test \ TestFileTab.txt"rw = 1TextFile = FreeFileAbrir FilePath para entrada como TextFileFileContent = Input (LOF (TextFile), TextFile)Fechar TextFileLineArray () = Split (FileContent, vbNewLine) 'mude vbNewLine para vbCrLf ou vbLf dependendo do separador de linha que é usado em seu arquivo de textoPara x = LBound (LineArray) Para UBound (LineArray)If Len (Trim (LineArray (x))) 0 ThenTempArray = Split (LineArray (x), Delimitador)col = UBound (TempArray)ReDim Preserve DataArray (col, rw)Para y = LBound (TempArray) Para UBound (TempArray)DataArray (y, rw) = TempArray (y)Células (x + 1, y + 1) .Value = DataArray (y, rw) 'este código começará a colar o conteúdo do arquivo de texto da célula A1 (Cell (1,1)) da planilha ativaA seguirFim serw = rw + 1Próximo xEnd Sub |
Os separadores de linha em seu arquivo de texto podem ser combinação de retorno de carro e alimentação de linha (Chr (13) + Chr (10)) ou alimentação de linha (Chr (10)). Use vbCrLf ou vbLf, de acordo. Se você não tiver certeza, use vbNewLine para indicar o separador de linha.