尽管使用FreeFile,EOF错误

时间:2012-11-14 09:08:58

标签: excel vba eof

我在VBA中遇到以下问题

Dim backupFile As Integer
Dim backupFName As String

backupFName = xBackupDirName & "\" & "swap_backup_cf_" & xSwapID & ".txt"
backupFile = fopenForReading(backupFName)

Dim tmp  As String
tmp = getLine(backupFile)

Dim b As Boolean
b = EOF(backupFile)

fopenforReadinggetLine正是您所期望的(我只是来自C ++背景,更快地想到这些名称)。问题是最后一行给了我"错误的文件名或编号"错误。但是,tmp=getLine(backupFile)会成功读取backupFile。我做错了什么?

P.S。只是为了完整性:

Public Function fopenForReading(xFname As String) As Integer
    Dim iFile As Integer
    iFile = FreeFile            
    Open xFname For Input As #iFile
    fopenForReading = iFile
End Function

Public Function getLine(iFile As Integer) As String
   Dim line As String
   Line Input #iFile, line
   getLine = line
End Function

1 个答案:

答案 0 :(得分:0)

它适用于我(Excel 2010),唯一的修改是文件名。我最好的猜测是(假设这是一个提取,这可能是一个安全的假设)在某个地方,backupFile的值被更改或丢失或文件已经以某种方式关闭。

我建议在代码中放置两个断点,一个在Freefile命令中检查返回的数字(可能性是“1”,但无论如何都要检查)和一个EOF命令,以便你可以在执行之前检查backupFile的值。

我发生的另一件事是getLine函数调用可能在循环中的某个地方;确保在循环内不再调用fopenforReading。只是一种可能性。