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.