2017-01-11 189 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 嘗試更換的東西,但我得到同樣的錯誤..語法這條線上的錯誤。我現在很困惑:/ –

相關問題