beaucoup plus facile d'utiliser le moteur d'exécution de script qui est installé par défaut sur Windows
Accédez simplement au projet Référence et cochez Microsoft Scripting Runtime, puis cliquez sur OK.
Ensuite, vous pouvez utiliser ce code qui est bien mieux que le fichier par défaut des commandes
Dim FSO As FileSystemObject
Dim TS As TextStream
Dim TempS As String
Dim Final As String
Set FSO = New FileSystemObject
Set TS = FSO.OpenTextFile("C:\Clients\Converter\Clockings.mis", ForReading)
'Use this for reading everything in one shot
Final = TS.ReadAll
'OR use this if you need to process each line
Do Until TS.AtEndOfStream
TempS = TS.ReadLine
Final = Final & TempS & vbCrLf
Loop
TS.Close
Set TS = FSO.OpenTextFile("C:\Clients\Converter\2.txt", ForWriting, True)
TS.Write Final
TS.Close
Set TS = Nothing
Set FSO = Nothing
Quant à ce qui ne va pas avec votre code original ici que vous lisez chaque ligne du fichier texte.
Input #iFileNo, sFileText
Alors là, vous l'écrire
Write #iFileNo, sFileText
sFileText est une variable de chaîne de sorte ce qui se passe est que chaque fois que vous lisez, vous suffit de remplacer le contenu de sFileText avec le contenu de la ligne que vous viens de lire. Donc, quand vous allez l'écrire, tout ce que vous écrivez est la dernière ligne que vous avez lue, ce qui est probablement une ligne vide.
Dim sFileText As String
Dim sFinal as String
Dim iFileNo As Integer
iFileNo = FreeFile
Open "C:\Clients\Converter\Clockings.mis" For Input As #iFileNo
Do While Not EOF(iFileNo)
Input #iFileNo, sFileText
sFinal = sFinal & sFileText & vbCRLF
Loop
Close #iFileNo
iFileNo = FreeFile 'Don't assume the last file number is free to use
Open "C:\Clients\Converter\2.txt" For Output As #iFileNo
Write #iFileNo, sFinal
Close #iFileNo
Notez que vous n'avez pas besoin de créer une boucle pour écrire. sFinal contient le texte complet du fichier prêt à être écrit en une fois. Notez que l'entrée lit une ligne à la fois, de sorte que chaque ligne ajoutée à sFinal doit avoir un CR et LF ajouté à la fin pour être écrit correctement sur un système MS Windows. Un autre système d'exploitation peut simplement avoir besoin d'un LF (Chr $ (10)).
Si vous devez traiter les données entrantes, vous devez procéder de la sorte.
Dim sFileText As String
Dim sFinal as String
Dim vTemp as Variant
Dim iFileNo As Integer
Dim C as Collection
Dim R as Collection
Dim I as Long
Set C = New Collection
Set R = New Collection
iFileNo = FreeFile
Open "C:\Clients\Converter\Clockings.mis" For Input As #iFileNo
Do While Not EOF(iFileNo)
Input #iFileNo, sFileText
C.Add sFileText
Loop
Close #iFileNo
For Each vTemp in C
Process vTemp
Next sTemp
iFileNo = FreeFile
Open "C:\Clients\Converter\2.txt" For Output As #iFileNo
For Each vTemp in R
Write #iFileNo, vTemp & vbCRLF
Next sTemp
Close #iFileNo
Eh bien, si votre fichier stocke mal de données sous forme de texte, vous pouvez simplement copier le fichier à 1.txt ... :-) –
Il n'y a rien 1.txt parce que vous écrivez à 2.txt ... –