问题描述
我试图编写一个子文件来重写文本文件的第 27 行。但是 EOF(1)
似乎只在 10% 的时间内起作用。其他时候它只是直接在第一个循环中运行,并且不返回任何内容。有人知道原因吗?
Dim File As String
Dim VecFile() As String,Aux As String
Dim i As Long,j As Long
Dim SizeNewFile As Long
Open (filepath) For Input As 1
i = 0
j = 0
Do Until EOF(1)
j = j + 1
Line Input #1,Aux
If j <> 27 Then
i = i + 1
ReDim Preserve VecFile(1 To i)
VecFile(i) = Aux
End If
Loop
Close #1
SizeNewFile = i
'Write array to file
Open ("filepath") For Output As 1
For i = 1 To 26
Print #1,VecFile(i)
Next i
Print #1,"\newcommand\casenumber{" & Sheets("Database").Range("$B$1").Value & "}" & Chr(13) & Chr(10)
For i = 28 To SizeNewFile
Print #1,VecFile(i)
Next i
Close #1
我收到运行时错误 9,下标超出范围。
解决方法
试试这样的:
Sub Tester()
Const FILE_PATH As String = "C:\Tester\Modify Me.txt"
Dim arr,txt
With CreateObject("scripting.filesystemobject")
txt = .opentextfile(FILE_PATH,1).readall() 'read all content
arr = Split(txt,vbCrLf) 'zero-based array from file content
'modify content if reached required # of lines
If UBound(arr) >= 26 Then arr(26) = "---New line goes here---"
txt = Join(arr,vbCrLf)
.opentextfile(FILE_PATH,2,True).write txt 'write back modified text
End With
End Sub