E 'molto più facile da usare il runtime di script che viene installato di default su Windows
Basta andare a Project Reference e controllare Microsoft Scripting Runtime e fare clic su OK.
quindi è possibile utilizzare questo codice, che è il modo migliore di file predefinito comandi
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
Per quanto riguarda ciò che è sbagliato con il codice originale qui si sta leggendo ogni riga del file di testo.
Input #iFileNo, sFileText
Allora qui si scrive fuori
Write #iFileNo, sFileText
sFileText è una variabile stringa in modo ciò che sta accadendo è che ogni volta che si legge, è sufficiente sostituire il contenuto della sFileText con il contenuto della linea che si appena letto.
Così quando si va a scrivere, tutto ciò che si sta scrivendo è l'ultima riga che si legge, che è probabilmente una riga vuota.
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
Nota che non è necessario eseguire un ciclo per scrivere. sFinal contiene il testo completo del file pronto per essere scritto in un colpo solo. Nota che l'input legge una LINE alla volta, quindi ogni riga aggiunta a sFinal deve avere un CR e LF aggiunto alla fine per essere scritto correttamente su un sistema MS Windows. Altri sistemi operativi potrebbero necessitare solo di un LF (Chr $ (10)).
Se è necessario elaborare i dati in entrata, è necessario eseguire un'operazione di questo tipo.
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
Beh, se i mis il file memorizza di dati come testo, si può solo copiare il file 1.txt ... :-) –
Non c'è niente in 1.txt perché si sta scrivendo a 2.txt ... –