2014-09-23 2 views
1

В VBA (из MS Access) Я пытаюсь определить, если файл XLS ОТКРЫТ с помощью вызова следующей функции, посылая полный путь и имя файла:IsFileOpen() Файл NeverSees как открыт?

Function IsFileOpen(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: IsFileOpen = False 
     Case 70: IsFileOpen = True 
     Case 53: IsFileOpen = False ' File not found 
     Case Else: Error ErrNo 
    End Select 

End Function 

Эта процедура только когда-либо возвращает (0) - Файл Закрыто - независимо от состояния файла. Я подтвердил, что путь и имя файла верны, построены в Access следующим образом:

strPath = Left(CurrentDb.NAME, InStrRev(CurrentDb.NAME, "\")) 
myFile = strPath & myInvID & "ChangeTemplate.xlsx" 

Любые мысли, что мне может не хватать здесь?

Спасибо!

+0

Примечание: Рутинное делает см Err 53 - Файл не найден. Я добавил это условие к утверждению Case. –

ответ

1

Argh! XLS сохранялся с AccessMode: = xlShared

Файл всегда прошел тест LOCK из этой процедуры.

< < тема закрыта >>

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