微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

从 VBA 读取和写入文本文件,EOF() 迭代仅在 10% 的时间内有效

如何解决从 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 举报,一经查实,本站将立刻删除。