VBA - Lire le fichier texte ligne par ligne

Ce tutoriel montrera comment lire le contenu de fichiers texte ligne par ligne avec VBA.

Nous pouvons soit lire le fichier texte comme un fichier entier, soit ligne par ligne.

Lire le fichier texte ligne par ligne

Le texte d'un fichier texte est généralement composé de plusieurs lignes, séparées par des délimiteurs. Ceux-ci peuvent être une virgule (","), une virgule avec espace (", "), un point-virgule (";"), un point-virgule avec espace ("; "), un espace (" "), une tabulation (vbTab ) ou, dans de rares cas, tout autre caractère tel qu'un tilde (~). Les lignes sont normalement séparées par un saut de ligne (vbCRLF).

Le moyen le plus simple de lire un fichier texte ligne par ligne dans notre feuille de calcul en VBA consiste à sélectionner la première cellule dans laquelle nous voulons placer le texte, puis à exécuter le code suivant :

1234567891011 Sous-LireFichier()Dim strFile en tant que chaîne, strLine en tant que chaînestrFile = "C:\Test\TestFile.txt"Ouvrir strFile pour l'entrée en tant que #1Faire jusqu'à EOF(1)Entrée de ligne #1, strLineActiveCell = strLineActiveCell.Offset(1, 0).SélectionnerBoucleFermer #1Fin du sous-marin

Cela mettra chaque ligne du fichier texte dans une seule cellule dans Excel.

Nous pouvons également lire un fichier texte en VBA en utilisant le FileSystemObject. Dans le code ci-dessous, nous avons utilisé une liaison tardive avec l'objet de système de fichiers. Vous pouvez également créer une référence dans votre projet VBA. Voir ici pour plus d'informations.

123456789101112131415 Sous-LireFichierTexte()Dim strLine en tant que chaîneDim FSO comme objetDim TSO en tant qu'objetDéfinir FSO = CreateObject("Scripting.FileSystemObject")Définir TSO = FSO.OpenTextFile("C:\Test\TestFile.txt")Faire sans TSO.AtEndOfStreamstrLine = TSO.ReadLineActiveCell = strLineActiveCell.Offset(1, 0).SélectionnerBoucleTSO.FermerDéfinir TSO = RienDéfinir FSO = RienFin du sous-marin

Nous pouvons créer une boucle un peu plus compliquée si nous voulons séparer les lignes en cellules par leurs délimiteurs. Ici, nous avons utilisé la liaison anticipée dans le code et déclaré l'objet du système de fichiers.

123456789101112131415161718192021222324 Sous ReadTextFileWithSeparators()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 As StringDéfinir FSO = CreateObject("Scripting.FileSystemObject")Définir TSO = FSO.OpenTextFile("C:\Test\TestFile.txt")Délimiteur = ","Indice = 1Faire alors que TSO.AtEndOfStream = FalseStrLine = TSO.ReadLineStrLineElements = Split(StrLine, Delimiter)Pour i = LBound(StrLineElements) À UBound(StrLineElements)Cells(Index, i + 1).Valeur = StrLineElements(i)Ensuite jeIndice = Indice + 1BoucleTSO.FermerDéfinir TSO = RienDéfinir FSO = RienFin du sous-marin

Cela entraînera la séparation des lignes en cellules individuelles dans Excel selon le graphique ci-dessous.

Vous contribuerez au développement du site, partager la page avec vos amis

wave wave wave wave wave