VB(A)

파일 오픈 여부 판단하기

당근쨈 2019. 3. 20. 11:38


엑셀 파일이 열려있는지 판단하는 사용자정의함수입니다.

열려있는 파일을 다시 열려고 하면 에러가 나는데

이때 에러번호는 70 입니다.


에러번호가 70인지를 판단하여 결과를 내줍니다.


파일 오픈 여부.xlsm


Option Explicit
 
Function IsFileOpen(filename As StringAs Boolean
'파일 오픈 여부를 알려주는 사용자정의함수입니다.
 
    Dim errNum As Integer
 
    '읽기 전용으로 파일을 엽니다.
    '파일이 열려있거나 없을 때 파일을 열려고 하면 에러가 나므로 에러처리를 해줍니다.
    '열려있는 파일을 열려고 할 때의 에러번호는 70입니다
    '때문에 에러번호가 70이면 파일이 열려있다고 판단합니다.
    On Error Resume Next
        
        Open filename For Input Lock Read As #FreeFile()
    
        Close FreeFile()
        errNum = Err
 
    On Error GoTo 0
 
    IsFileOpen = IIf(errNum = 70TrueFalse)
 
End Function
 
Sub Macro()
 
    Dim PrintMsg As String
    
    With Range("A1")
    
        PrintMsg = IIf(IsFileOpen(ThisWorkbook.Path & "\" & .Value) = True, _
                    .Value & " 파일은 열려있습니다.", _
                    .Value & " 파일은 열려있지 않습니다.")
            
    End With
    
    MsgBox PrintMsg, vbInformation
    
End Sub
 
cs