Ce didacticiel montrera comment écrire dans des fichiers texte à l'aide de VBA.
Écrire dans un fichier texte
Les codes ci-dessous utilisent le FileSystemObject. Pour l'utiliser, vous devrez définir une référence à la bibliothèque d'exécution du script VB.
Écrire dans un nouveau fichier texte
Avec le CréerFichierTexte méthode de FileSystemObject vous pouvez créer puis ajouter du contenu à un fichier texte :
123456789 | Sous-FSOCreateAndWriteToTextFile()Dim FSO en tant que nouvel objet FileSystemDéfinir FSO = CreateObject("Scripting.FileSystemObject")Définir FileToCreate = FSO.CreateTextFile("C:\Test\TestFile.txt")FileToCreate.Write "ligne de test"FichierPourCréer.FermerFin du sous-marin |
Veuillez noter que le contenu ne sera pas entouré de guillemets.
Écrire dans un fichier texte existant
Pour écrire dans un fichier texte existant, vous pouvez utiliser le OuvrirFichierTexte méthode de FileSystemObject avec Pour écrire mode.
123456789 | Sous-FSOWriteToTextFile()Dim FSO en tant que nouvel objet FileSystemDéfinir FSO = CreateObject("Scripting.FileSystemObject")Définir FileToWrite = FSO.OpenTextFile("C:\Test\TestFile.txt", ForWriting)FileToWrite.Write "ligne de test"FichierVersEcrire.FermerFin du sous-marin |
Veuillez noter que vous n'avez pas nécessairement besoin de FileSystemObject pour écrire dans un fichier texte existant. L'exemple ci-dessus est illustré d'une autre manière dans ce code ci-dessous (voir un autre exemple dans la section Plage de données vers fichier texte) :
123456789 | Sous WriteToTextFile()Dim FileName As StringFileName = "C:\Test\TestFile.txt"Ouvrir le nom de fichier pour la sortie en tant que #1Imprimer #1, "ligne de test"Fermer #1Fin du sous-marin |
Veuillez noter que l'utilisation de la commande Write au lieu de Print entraînera le contenu ajouté entre guillemets. Avoir les deux commandes dans votre macro
12 | Écrivez #1, "tester la ligne #1"Imprimer #1, "tester la ligne #2" |
donnera un fichier texte comme celui-ci :
Programmation VBA | Le générateur de code fonctionne pour vous !
Ajouter au fichier texte
En changeant le mode dans le code ci-dessus en ForAppending, une ligne peut être ajoutée à la fin du fichier texte :
1 | Définir FileToWrite = FSO.OpenTextFile("C:\Test\TestFile.txt", ForAppending) |
Méthode WriteLine
Cette méthode ajoute la chaîne d'entrée en tant que ligne distincte au contenu existant.
Méthode d'écriture
La chaîne d'entrée est ajoutée sur la même ligne que le contenu existant.
Fatigué de rechercher des exemples de code VBA ? Essayez AutoMacro !
Écrire des lignes vierges
Cette méthode prend le nombre de lignes vides à écrire dans le fichier texte en tant que paramètre.
Ce code ci-dessous illustre la différence entre les différentes méthodes d'écriture :
12345678910111213 | Sous WriteMethods()Dim FSO en tant que nouvel objet FileSystemDéfinir FSO = CreateObject("Scripting.FileSystemObject")Définir FileToWrite = FSO.OpenTextFile("C:\Test\TestFile.txt", ForAppending)FileToWrite.Write « ligne de test 1 »FileToWrite.Write "ligne de test #2"FileToWrite.WriteBlankLines (3)FileToWrite.WriteLine "ligne de test n°3"FileToWrite.WriteLine "ligne de test n°4"FichierVersEcrire.FermerFin du sous-marin |
Et le résultat :
Programmation VBA | Le générateur de code fonctionne pour vous !
Plage de données dans un fichier texte
Si vous souhaitez exporter une plage de données de votre feuille de calcul dans un fichier texte, vous pouvez utiliser ce code :
12345678910111213141516171819 | Sub OutputToTextFile()Dim FileName As String, LineText As StringDim MyRange As Range, i, jFileName = "C:\Test\TestFile.txt" 'vous pouvez spécifier ici le nom du fichier texte que vous souhaitez créerOuvrir le nom de fichier pour la sortie en tant que #1Set MyRange = Range("data") 'il suppose que vous avez une plage de données nommée "data" sur votre feuille de calculPour i = 1 à MyRange.Rows.CountPour j = 1 à MyRange.Columns.CountLineText = IIf(j = 1, "", LineText & ",") & MyRange.Cells(i, j) 'le fichier texte créé aura un séparateur virgulej suivantPrint #1, LineText 'en utilisant la commande Write au lieu de Print entraînera l'apparition de vos données entre guillemets dans le fichier texte de sortieEnsuite jeFermer #1Fin du sous-marin |
Tableau vers fichier texte
Vous pouvez également enregistrer votre tableau de données dans un fichier texte comme celui-ci :
12345678910111213141516 | Sub SaveArrayToTextFile()Dim MyArray comme varianteDim FSO en tant que nouvel objet FileSystemDéfinir FSO = CreateObject("Scripting.FileSystemObject")MonTableau = Tableau(Tableau("00", "01"), Tableau("10", "11"), Tableau("20", "21"))Définir FileToCreate = FSO.CreateTextFile("C:\Test\TestFile.txt")Pour n = 0 à UBound(MyArray)FileToCreate.WriteLine MonTableau(n)(0) & "," & MonTableau(n)(1)ProchainFichierPourCréer.FermerFin du sous-marin |