Excel Vba“;“文件已打开”;当它不是windows office时

Excel Vba“;“文件已打开”;当它不是windows office时,vba,excel,Vba,Excel,我试图从与当前打开的工作簿位于同一文件夹中的另一个电子表格中读取数据,每当我运行此代码时,错误文件都已打开。我的语法是否有问题,或者有什么可能阻止这种情况发生 这是代码 Sub ReadFile() Infile = ThisWorkbook.Path & "\smallDataset.csv" Open Infile For Input As #1 Input #1, a, b Close #1 Debug.Print (

我试图从与当前打开的工作簿位于同一文件夹中的另一个电子表格中读取数据,每当我运行此代码时,错误文件都已打开。我的语法是否有问题,或者有什么可能阻止这种情况发生

这是代码

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

谢谢。

我也遇到了您的错误,这些都是造成上述错误的可能原因

1)
CSV
Excel
文件一起打开 2) 您的代码已被删除

解决第一个问题

  • 当CSV未打开时,尝试运行VBA代码
解决第二个问题

  • 将数据写入
    CSV
    对象后,尝试使用关闭该对象

我不确定您的完整代码,但请检查您是否有类似于
Excel的内容。请关闭
Excel。退出

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

或者使用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

您当前打开的工作簿的名称是什么?(挑剔:一个.csv文件不是电子表格;它是一个逗号分隔值的文本文件(也称为csv文件)。)重新启动计算机,然后重试。另外,添加一行
Debug.Print thiswoolk.Path
,以确保返回正确的路径。(例如,如果您的工作簿尚未保存,它将为空。)乍一看,我认为您的语法也有点不正确,请参阅使用VBA读取csv。如果是错误55,则可能意味着您已经打开了一个文件,其文件句柄为
#1
。(不一定是同一个文件,只是任何文件。)尝试在即时窗口中输入
Close
(关闭所有打开的文件),然后再次运行代码
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