Fichier texte de lecture VBA (lecture, analyse et importation)

Ce didacticiel montrera comment lire le contenu de fichiers texte et le coller dans des feuilles de calcul avec VBA.

Lire le contenu du fichier texte dans la feuille de calcul

La façon la plus simple de lire le contenu d'un fichier texte est de le copier dans la cellule d'une feuille de calcul.

123456789101112 Sous-FSOPasteTextFileContent()Dim FSO en tant que nouvel objet FileSystemDéfinir FSO = CreateObject("Scripting.FileSystemObject")Set FileToRead = FSO.OpenTextFile("C:\Test\TestFile.txt", ForReading) 'ajoutez ici le chemin de votre fichier texteTextString = FileToRead.ReadAllFichierVersLire.FermerThisWorkbook.Sheets(1).Range("A1").Value = TextString 'vous pouvez spécifier la feuille de calcul et la cellule où coller le contenu du fichier texteFin du sous-marin

Le code ci-dessus utilise le FileSystemObject. Pour l'utiliser, vous devrez définir une référence à la bibliothèque d'exécution du script VB. Voir ici pour plus d'informations.

Sans utiliser FileSystemObject, vous pouvez coller le contenu de votre fichier texte avec le code ci-dessous. Si votre fichier texte contient un séparateur de ligne, il sera collé ligne par ligne.

123456789101112 Sous-collerContenuFichierTexte ()Dim wbExcel en tant que classeur, wbText en tant que classeurDim wsExcel As WorksheetSet wbExcel = ThisWorkbook ' spécifiez ici dans quel fichier Excel le contenu du fichier texte doit être colléSet wsExcel = wbExcel.Sheets(1) 'spécifiez ici quelle feuille de calcul utiliserSet wbText = Workbooks.Open("C:\Test\TestFile.txt") 'ajoutez ici le chemin de votre fichier textewbText.Sheets(1).Cells.Copy wsExcel.CellswbText.Close SaveChanges:=FalseFin du sous-marin

Lire le contenu du fichier texte ligne par ligne, colonne par colonne

Votre fichier texte peut comporter plusieurs lignes et plusieurs éléments répertoriés dans les lignes séparés par une virgule, un point virgule, une tabulation, un espace, etc… Afin de lire et coller correctement le contenu du fichier texte, vous aurez peut-être besoin de ce code ci-dessous :

1234567891011121314151617181920212223242526 Sous-collerTextFileContentWithSeparators()Dim StrLine en tant que chaîneDim FSO en tant que nouvel objet FileSystemDim TSO en tant qu'objetDim StrLineElements en tant que varianteIndice de faible aussi longDim j'aussi longtempsDim Delimiter en tant que chaîneDéfinir FSO = CreateObject("Scripting.FileSystemObject")Définir TSO = FSO.OpenTextFile("C:\Test\TestFile.txt")Delimiter=", " 'le délimiteur utilisé dans votre fichier texteIndice = 1Faire alors que TSO.AtEndOfStream = FalseStrLine = TSO.ReadLineStrLineElements = Split(StrLine, Delimiter)Pour i = LBound(StrLineElements) À UBound(StrLineElements)Cells(Index, i + 1).Value = StrLineElements(i) 'ce code commencera à coller le contenu du fichier texte à partir de la cellule A1 (Cell(1,1)) de la feuille de calcul activeEnsuite jeIndice = Indice + 1BoucleTSO.FermerFin du sous-marin

Le délimiteur utilisé dans votre fichier texte peut être une virgule (","), une virgule avec un espace (", "), un point-virgule (";"), un point-virgule avec un espace ("; "), un espace (" "), une tabulation (changer alors Delimiter = vbTab) ou dans de rares cas tout autre caractère.

Lire des fichiers texte dans des tableaux

Si vous devez lire le contenu de votre fichier texte dans un tableau et le coller ligne par ligne, colonne par colonne dans votre feuille de calcul, vous aurez besoin du code ci-dessous :

12345678910111213141516171819202122232425262728293031323334 Sous ReadDelimitedTextFileIntoArray()Dim Delimiter As StringDim TextFile en tant qu'entierDim FilePath en tant que chaîneDim FileContent As StringDim LineArray() en tant que chaîneDim DataArray() en tant que chaîneDim TempArray() en tant que chaîneDim rw As Long, col As LongDelimiter = vbTab' le délimiteur qui est utilisé dans votre fichier texteFilePath = "C:\Test\TestFileTab.txt"rw = 1TextFile = FreeFileOuvrir FilePath pour l'entrée en tant que fichier texteFileContent = Input(LOF(TextFile), TextFile)Fermer le fichier texteLineArray() = Split(FileContent, vbNewLine) 'changez vbNewLine en vbCrLf ou vbLf en fonction du séparateur de ligne utilisé dans votre fichier textePour x = LBound(LineArray) À UBound(LineArray)Si Len(Trim(LineArray(x))) 0 AlorsTableauTemp = Diviser(TableauLigne(x), Délimiteur)col = UBound(TempArray)ReDim Preserve DataArray (col, rw)Pour y = LBound(TempArray) À UBound(TempArray)TableauDonnées(y, rw) = TableauTemp(y)Cells(x + 1, y + 1).Value = DataArray(y, rw) 'ce code commencera à coller le contenu du fichier texte à partir de la cellule A1 (Cell(1,1)) de la feuille de calcul activeY suivantFin sirw = rw + 1Suivant xFin du sous-marin

Les séparateurs de ligne dans votre fichier texte peuvent être une combinaison de retour chariot et de saut de ligne (Chr(13)+Chr(10)) ou de saut de ligne (Chr(10)). Utilisez vbCrLf ou vbLf, en conséquence. Si vous n'êtes pas sûr, utilisez vbNewLine pour indiquer le séparateur de ligne.

wave wave wave wave wave