如何解决从 VBA 读取和写入文本文件,EOF() 迭代仅在 10% 的时间内有效
我试图编写一个子文件来重写文本文件的第 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
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。