2017-01-11 192 views
0

所以...我用这段代码以供参考:检查excel工作簿是否打开?

Option Explicit 

Sub Sample() 
Dim Ret 

Ret = IsWorkBookOpen("C:\myWork.xlsx") 

If Ret = True Then 
    MsgBox "File is open" 
Else 
    MsgBox "File is Closed" 
End If 
End Sub 

Function IsWorkBookOpen(FileName As String) 
Dim ff As Long, ErrNo As Long 

On Error Resume Next 
ff = FreeFile() 
Open FileName For Input Lock Read As #ff 
Close ff 
ErrNo = Err 
On Error GoTo 0 

Select Case ErrNo 
Case 0: IsWorkBookOpen = False 
Case 70: IsWorkBookOpen = True 
Case Else: Error ErrNo 
End Select 
End Function 

我用我的工作簿和代表一切,但是第15行返回语法错误:FF = FreeFile_()。

为什么会出现这种情况?有什么语法错误? 我正在尝试检查工作簿是否由其他用户打开,因为如果是这种情况,我无法将这些值保存在工作簿中。

感谢答案,D

+1

在你的评论中你写'ff = FreeFile _()',但是在你的代码中'ff = FreeFile()'。没有下划线的初始代码正常工作。 –

+0

是的,我知道......在我的代码中,我写了ff = FreeFile(),但是当我得到错误时,它已经强调了它。 –

+0

尝试没有括号的'ff = FreeFile'。我有Excel 2016,它适用于或不适用它们。 –

回答

0

我认为你做了复制/粘贴代码到VBA编辑器。因此,清理代码,删除不需要的所有空白,验证每行的完成位置。

+0

你好,谢谢你的回答。 我重写了整个代码,但也有同样的错误...我没有得到它,但比我在最后一行卡在case ...再次语法错误.. –

+0

你的意思是错误在线“Case Else:错误错误“?如果是这样,那么用“ErrNo = Err.Number”替换“ErrNo = Err” –

+0

是的,这是错误..它说的是语法错误Case Else:_Error ErrNo 尝试更换的东西,但我得到同样的错误..语法这条线上的错误。我现在很困惑:/ –

相关问题