Excel Vba“文件已经打开”,当它不是 - Windows办公室

时间:2017-12-27 00:48:54

标签: excel vba excel-vba

我正在尝试从与我当前打开的工作簿相同的文件夹中的另一个电子表格中读取数据,每当我运行此代码时,我都会打开错误文件。我的语法或任何可能阻止这种情况发生的事情有问题吗?

这是代码。

Sub ReadFile()
    Infile = ThisWorkbook.Path & "\smallDataset.csv"
    Open Infile For Input As #1
        Input #1, a, b
        Close #1
        Debug.Print (a & " " & b)
End Sub

感谢。

2 个答案:

答案 0 :(得分:1)

尝试以下代码以确保没有使用句柄#1打开文件

Sub ReadFile()
    InFile = ThisWorkbook.Path & "\smallDataset.csv"
    Close #1
    Open InFile For Input As #1
        Input #1, a, b
        Close #1
        Debug.Print (a & " " & b)
End Sub

或者您使用Freefile获取下一个号码

Sub ReadFile
FileNumber = FreeFile

InFile = ThisWorkbook.Path & "\smallDataset.csv"

    Open InFile For Input As FileNumber
        Input #FileNumber, a, b
        Close #FileNumber
        Debug.Print (a & " " & b)
End Sub

答案 1 :(得分:0)

我也遇到了您所遇到的错误,这些是导致错误的可能原因。

1)CSVExcel文件一起打开 2)您的代码有memory leaks

解决数字1

  • 尝试在未打开CSV时运行VBA代码

解决2号问题

  • 尝试在将数据写入其中后关闭CSV对象。

我不确定您的完整代码,但请检查您是否有类似Excel.CloseExcel.Quit的内容。