출처 : 엑셀 바이블 486p
Function IsFileOpen(파일 As String) As Boolean
Dim 열린파일 As Workbook
On Error Resume Next
Set 열린파일 = Workbooks(Dir(파일))
IsFileOpen = (Err.Number = 0)
End Function
파일이 열려있을 경우 :
→ Dir(파일)이 파일명을 뱉어냄
→ 열린파일이라는 변수에 Workbooks 개체가 맞게 들어감
→ 에러 발생안함
→ Err.Number = 0이 됨
→ IsFileOpen이 True가 됨
파일이 열려있지 않을경우(파일이 존재하지 않는 경우 등등):
→ 열린파일이라는 변수에 Workbooks 개체가 안 들어감 [★밑에설명]
→ 에러 발생함
→ Err.Number = 0이 아니게 됨
→ IsFileOpen이 False가 됨
파일이 열려있지 않을때가 잘 이해가 안되는데 왜 그럴까? 파일이 안열려있으면 왜 열린파일이라는 변수에 Workbooks(Dir(파일))이 할당이 안되는건지....
곰곰히 생각해보니까 열려있지도 않은 파일을 변수로 이용할 수는 없는게 당연하다.
자연스럽다고 해야되나?
그냥 이해가 안되면 지역조사창을 켜서 한번 확인해보는 것도 도움이된다.
1) 열려있는 파일을 가져올 경우
2) 열려있지않은 파일을 가져올 경우
니꾸 엑셀블로그도 유사한 코드가 있다
https://blog.naver.com/rosa0189/60135538368
workbook이 열려 있는지 확인하는 코드. is_wkb_Open.xlsm은 열려있는 파일이므로 참, 열려있지 않은 workbook은 거짓 반환.
Option Explicit
Function is_wkb_Open(wkbName As String) As Boolean
Dim wkb As Workbook 'workbook을 넣을 변수
On Error Resume Next '에러 발생시에도 코드 계속 진행
Set wkb = Workbooks(wkbName) 'wkbName을 개체변수에 넣음
If Not wkb Is Nothing Then '(만일 변수에 넣었는데)에러 발생하지 않으면
is_wkb_Open = True '그 workbook은 열려있는 것이므로 참값 반환
Else '아니면
is_wkb_Open = False '거짓을 반환. 찾는 workbook이 열려있지 않음.
End If
End Function
'엑셀 > 엑셀 VBA' 카테고리의 다른 글
파일 존재하는지, 열려있는지 함수 IsFileExist, IsFileOpen (0) | 2024.05.15 |
---|---|
엑셀파일 열기 GetOpenFilename (0) | 2024.05.15 |
폴더 내에 있는 파일명들 불러오는 방법 (0) | 2024.05.15 |
visual studio로 vba 편집하기(vbe) (0) | 2024.05.07 |
VBA 질문 : 필터걸고 N번째행까지만 선택하려면 어떻게 해야할지 (0) | 2024.04.20 |