Es mucho más fácil de utilizar el tiempo de ejecución de secuencias de comandos que se instala de forma predeterminada en Windows
Simplemente diríjase a Referencia del proyecto y compruebe Microsoft Scripting Runtime y haga clic en Aceptar.
continuación, puede utilizar este código, que es mucho mejor que el archivo predeterminado comandos
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
En cuanto a lo que está mal con su código original aquí que está leyendo cada línea del archivo de texto.
Input #iFileNo, sFileText
Entonces aquí se escribe fuera
Write #iFileNo, sFileText
sFileText es una variable de cadena así que lo que está sucediendo es que cada vez que lea, que acaba de reemplazar el contenido de sFileText con el contenido de la línea que acabo de leer.
Así que cuando va a escribirlo, todo lo que está escribiendo es la última línea que lee, que probablemente sea una línea en blanco.
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
Tenga en cuenta que no necesita hacer un bucle para escribir. sFinal contiene el texto completo del archivo listo para escribirse de una vez. Tenga en cuenta que la entrada lee una LÍNEA a la vez, por lo que cada línea anexa a sFinal necesita tener un CR y LF adjuntos al final para que se escriban correctamente en un sistema MS Windows. Otro sistema operativo puede necesitar una LF (Chr $ (10)).
Si necesita procesar los datos entrantes, debe hacer algo como esto.
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
Bueno, si su mal almacena el archivo de datos como texto, sólo podría copiar el archivo a 1.txt ... :-) –
no hay nada en 1.txt porque está escrito a 2.txt ... –