Nó dễ dàng hơn để sử dụng thời gian chạy kịch bản được cài đặt theo mặc định trên Windows
Chỉ cần tham khảo dự án Tham khảo và kiểm tra Thời gian chạy Microsoft Scripting và nhấp OK.
Sau đó, bạn có thể sử dụng mã này đó là cách tốt hơn so với các tập tin mặc định lệnh
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
Đối với những gì là sai với mã ban đầu của bạn ở đây bạn đang đọc từng dòng của file văn bản.
Input #iFileNo, sFileText
Sau đó, ở đây bạn viết nó ra
Write #iFileNo, sFileText
sFileText là một biến chuỗi vì vậy những gì đang xảy ra là mỗi lần bạn đọc, bạn chỉ cần thay thế các nội dung của sFileText với nội dung của dòng bạn chỉ đọc thôi.
Vì vậy, khi bạn viết nó ra, tất cả những gì bạn đang viết là dòng cuối cùng bạn đọc, có lẽ là một dòng trống.
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
Lưu ý bạn không cần lặp lại để viết. sFinal chứa toàn bộ văn bản của Tệp đã sẵn sàng để được viết tại một lần chụp. Lưu ý rằng đầu vào đọc một LINE tại một thời điểm để mỗi dòng nối vào sFinal cần phải có một CR và LF nối vào cuối để được viết chính xác trên một hệ thống MS Windows. Hệ điều hành khác có thể chỉ cần một LF (Chr $ (10)).
Nếu bạn cần xử lý dữ liệu đến thì bạn cần phải làm một việc như thế này.
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
Vâng, nếu mis bạn nộp lưu trữ dữ liệu của nó dưới dạng văn bản, bạn chỉ có thể sao chép các tập tin vào 1.txt ... :-) –
Không có gì trong 1.txt là bởi vì bạn đang viết để 2.txt ... –