2017-01-11 3 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: ФФ = FreeFile_().

Почему это так? Какая синтаксическая ошибка есть? Я пытаюсь проверить, открывается ли рабочая книга другим пользователем, потому что, если это так, я не могу сохранить значения в книге.

Спасибо за ответы, D.

+1

В вашем комментарии вы пишете 'ff = FreeFile _()', но в вашем коде 'ff = FreeFile()'. Исходный код без подчеркивания отлично работает. –

+0

Да, я знаю ... В моем коде я написал ff = FreeFile(), но когда я получаю ошибку, в нем есть подчеркивание. –

+0

Попробуйте 'ff = FreeFile' без круглых скобок. У меня Excel 2016, и он работает с ними или без них. –

ответ

0

Я думаю, что вы сделали копию/вставить код в редакторе VBA. Поэтому очистите код, удалите все бланки, которые не нужны, проверьте, где каждая строка завершена.

+0

Привет, спасибо за ответ. Я переписал весь код, но произошла такая же ошибка ... я пропустил его, но я застрял в последней строке на случай ... снова синтаксическая ошибка .. –

+0

вы имеете в виду ошибку в строке «Case Else: Ошибка ErrNo "? Если это так, замените «ErrNo = Err» на «ErrNo = Err.Number» –

+0

Да, это ошибка .. он говорит синтаксическую ошибку Case Else: _Error ErrNo Пробовал заменить материал, но я получаю ту же ошибку .. Синтаксис ошибка в этой строке. Я действительно запутался сейчас:/ –

 Смежные вопросы

  • Нет связанных вопросов^_^