Questo tutorial dimostrerà come leggere il contenuto da file di testo e incollarlo in fogli di lavoro con VBA.
Leggi il contenuto del file di testo nel foglio di lavoro
Il modo più semplice per leggere il contenuto di un file di testo è copiarlo nella cella di un foglio di lavoro.
123456789101112 | Sub FSOPasteTextFileContent()Dim FSO come nuovo oggetto FileSystemImposta FSO = CreateObject("Scripting.FileSystemObject")Set FileToRead = FSO.OpenTextFile("C:\Test\TestFile.txt", ForReading) 'aggiungi qui il percorso del tuo file di testoTextString = FileToRead.ReadAllFileDaLeggere.ChiudiThisWorkbook.Sheets(1).Range("A1").Value = TextString 'puoi specificare il foglio di lavoro e la cella dove incollare il contenuto del file di testoFine sottotitolo |
Il codice sopra usa FileSystemObject. Per utilizzarlo, sarà necessario impostare un riferimento alla libreria runtime di script VB. Vedi qui per maggiori informazioni.
Senza usare FileSystemObject puoi incollare il contenuto del tuo file di testo con il codice seguente. Se il tuo file di testo contiene un separatore di riga, verrà incollato riga per riga.
123456789101112 | Sub PasteTextFileContent ()Dim wbExcel come cartella di lavoro, wbText come cartella di lavoroDim wsExcel come foglio di lavoroImposta wbExcel = ThisWorkbook 'specifica qui in quale file Excel deve essere incollato il contenuto del file di testoImposta wsExcel = wbExcel.Sheets(1) 'specifica qui quale foglio di lavoro usareSet wbText = Workbooks.Open("C:\Test\TestFile.txt") 'aggiungi qui il percorso del tuo file di testowbText.Sheets(1).Cells.Copy wsExcel.CellswbText.Close SaveChanges:=FalseFine sottotitolo |
Leggi il contenuto del file di testo riga per riga, colonna per colonna
Il tuo file di testo può avere diverse righe e diversi elementi elencati nelle righe separate da virgola, punto e virgola, tabulazione, spazio, ecc… Per leggere e incollare correttamente il contenuto del file di testo, potresti aver bisogno di questo codice qui sotto:
1234567891011121314151617181920212223242526 | Sub PasteTextFileContentWithSeparators()Dim StrLine As StringDim FSO come nuovo oggetto FileSystemDim TSO come oggettoDim StrLineElements come varianteIndice di attenuazione il più a lungoDim I As LongDim Delimiter come stringaImposta FSO = CreateObject("Scripting.FileSystemObject")Imposta TSO = FSO.OpenTextFile("C:\Test\TestFile.txt")Delimiter=", " 'il delimitatore utilizzato nel file di testoIndice = 1Do While TSO.AtEndOfStream = FalseStrLine = TSO.ReadLineStrLineElements = Split(StrLine, Delimiter)Per i = LBound(StrLineElements) To UBound(StrLineElements)Cells(Index, i + 1).Value = StrLineElements(i) 'questo codice inizierà a incollare il contenuto del file di testo dalla cella A1 (Cell(1,1)) del foglio di lavoro attivoAvanti ioIndice = Indice + 1Ciclo continuoTSO.ChiudiFine sottotitolo |
Il delimitatore utilizzato nel file di testo può essere virgola (","), virgola con spazio (", "), punto e virgola (";"), punto e virgola con spazio ("; "), spazio (" "), tab (cambia quindi Delimiter = vbTab) o in rari casi qualsiasi altro carattere.
Leggi file di testo in array
Se hai bisogno di leggere il contenuto del tuo file di testo in un array e incollarlo riga per riga, colonna per colonna nel foglio di lavoro, avrai bisogno di questo codice di seguito:
12345678910111213141516171819202122232425262728293031323334 | Sub ReadDelimitedTextFileIntoArray()Delimitatore dim come stringaDim TextFile As IntegerDim FilePath As StringDim FileContent As StringDim LineArray() As StringDim DataArray() As StringDim TempArray() As StringDim rw As Long, col As LongDelimiter = vbTab 'il delimitatore che viene utilizzato nel file di testoFilePath = "C:\Test\TestFileTab.txt"rw = 1TextFile = FreeFileApri FilePath per l'input come file di testoContenutoFile = Input(LOF(FileTesto),FileTesto)Chiudi file di testoLineArray() = Split(FileContent, vbNewLine) 'cambia vbNewLine in vbCrLf o vbLf a seconda del separatore di riga utilizzato nel file di testoPer x = LBound(LineArray) A UBound(LineArray)Se Len(Trim(LineArray(x))) 0 AlloraTempArray = Split(LineArray(x), Delimitatore)col = UBound(TempArray)ReDim Preserve DataArray (col, rw)Per y = LBound(TempArray) a UBound(TempArray)DataArray(y, rw) = TempArray(y)Cells(x + 1, y + 1).Value = DataArray(y, rw) 'questo codice inizierà a incollare il contenuto del file di testo dalla cella A1 (Cell(1,1)) del foglio di lavoro attivoAvanti sìFinisci serw = rw + 1Avanti xFine sottotitolo |
I separatori di riga nel file di testo possono essere una combinazione di ritorno a capo e avanzamento riga (Chr(13)+Chr(10)) o avanzamento riga (Chr(10)). Utilizzare vbCrLf o vbLf, di conseguenza. Se non sei sicuro, usa vbNewLine per indicare il separatore di riga.