Гораздо проще использовать среду выполнения сценариев, которая установлена по умолчанию в Windows
Просто зайдите в Справочник по проекту, проверьте Microsoft Scripting Runtime и нажмите OK.
Тогда вы можете использовать этот код, который намного лучше, чем стандартные команды для файлов
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
Что касается того, что не так с вашим исходным кодом, то здесь вы читаете каждую строку текстового файла.
Input #iFileNo, sFileText
Тогда здесь вы пишете
Write #iFileNo, sFileText
sFileText является строковой переменной, поэтому при каждом чтении вы просто заменяете содержимое sFileText содержимым только что прочитанной строки.
Поэтому, когда вы идете писать, все, что вы пишете, это последняя прочитанная строка, которая, вероятно, является пустой строкой.
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
Обратите внимание, что вам не нужно делать цикл для записи. sFinal содержит полный текст файла, готовый к записи одним выстрелом. Обратите внимание, что input считывает LINE за раз, поэтому каждая строка, добавляемая к sFinal, должна иметь CR и LF, добавляемые в конце, чтобы быть правильно записанными в системе MS Windows. Другой операционной системе может просто понадобиться LF (Chr $ (10)).
Если вам нужно обработать входящие данные, вам нужно сделать что-то вроде этого.
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