0

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)

fopenforReadingandgetLineはまさにあなたが期待するものです (私は C++ のバックグラウンドを持っているので、これらの名前はすぐに頭に浮かびます) 。問題は、最後の行で「ファイル名または番号が正しくありません」というエラーが表示されることです。ただし、正常にtmp=getLine(backupFile)読み取りますbackupFile。私は何を間違っていますか?

PS完全を期すために:

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
4

1 に答える 1

0

ファイル名のみを変更するだけで、私(Excel 2010)では問題なく動作します。私の最善の推測は、バックアップファイルの値が変更されているか失われている途中のどこかで(おそらく安全な仮定である抽出であると仮定して)、またはファイルが何らかの形ですでに閉じられているということです。

コードに 2 つのブレークポイントを配置することをお勧めします。1 つは Freefile コマンドに返された数値をチェックするため (「1」になる可能性がありますが、とにかくチェックします)、もう 1 つは EOF コマンドに配置して、実行直前の backupFile の値。

もう 1 つ思いつくのは、おそらく getLine 関数呼び出しがループ内のどこかにあるということです。ループ内でも fopenforReading が再度呼び出されないようにしてください。ただの可能性。

于 2012-11-14T09:28:43.257 に答える