【发布时间】:2021-08-30 18:09:00
【问题描述】:
我试图编写一个 sub 来重写文本文件的第 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,下标超出范围。
【问题讨论】:
-
I got Run time error 9, subscript out of range- 显然是因为您的文件少于 26 行?
标签: vba text replace iteration file-writing