以下の関数を使用して、ファイルが別のプロセスによって使用されているかどうかを判別できます。

ファイルへのフルアクセスを取得できない場合、関数はTrueを返します。

Function FileAlreadyOpen(FullFileName As String) As Boolean

' returns True if FullFileName is currently in use by another process

' example: If FileAlreadyOpen("C:\FolderName\FileName.xls") Then...

Dim f As Integer

f = FreeFile

On Error Resume Next

Open FullFileName For Binary Access Read Write Lock Read Write As #f

Close #f

' If an error occurs, the document is currently open.

If Err.Number <> 0 Then

FileAlreadyOpen = True

Err.Clear

'MsgBox "Error #" & Str(Err.Number) & " - " & Err.Description

Else

FileAlreadyOpen = False

End If

On Error GoTo 0

End Function