我在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)
fopenforReading
和getLine
正是您所期望的(我只是来自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
答案 0 :(得分:0)
它适用于我(Excel 2010),唯一的修改是文件名。我最好的猜测是(假设这是一个提取,这可能是一个安全的假设)在某个地方,backupFile的值被更改或丢失或文件已经以某种方式关闭。
我建议在代码中放置两个断点,一个在Freefile命令中检查返回的数字(可能性是“1”,但无论如何都要检查)和一个EOF命令,以便你可以在执行之前检查backupFile的值。
我发生的另一件事是getLine函数调用可能在循环中的某个地方;确保在循环内不再调用fopenforReading。只是一种可能性。