엑셀 ValidFileName 함수 사용법 및 전체 명령문 :: 파일명 사용가능여부 확인

지정한 파일이름의 사용가능 여부를 확인하는 ValidFileName 함수의 사용법 및 전체 명령문 동작원리를 알아봅니다.

작성자 :
오빠두엑셀
최종 수정일 : 2021. 10. 31. 17:16
URL 복사
메모 남기기 : (1)

ValidFileName 함수 :: VBA 사용자 지정 함수

예제파일

요약

ValidFileName 함수는 파일이름의 사용가능여부를 확인하는 함수입니다.

설명

ValidFileName 함수는 지정한 파일이름이 윈도우에서 사용가능한지 여부를 확인하는 함수입니다. 윈도우에서는 아래 9개의 기호를 파일 또는 폴더명에 사용할 수 없습니다.

  • 해당 경로에 파일이 존재하는지 여부를 확인하려면 FileExists 함수를 사용하세요.
  • 사용자 컴퓨터의 바탕화면 경로를 받아오려면 GetDesktopPath 함수를 사용합니다.
  • 파일 저장시 파일 이름을 순번에따라 저장하고 싶다면 FileSequence 함수를 사용할 수 있습니다.
기호 기호명
/ Slash(슬래쉬)
\ BackSlash(백슬래쉬)
: Colon(콜론, 땡땡)
* Asterisk(별표시)
? Question Mark(물음표)
" Double Quote(쌍따옴표)
< Less Than (왼쪽 꺾쇄)
> Greater Than (오른쪽 꺾쇄)
| Vertical Bar (세로바)
VBA ValidFileName 함수 사용법
파일이름의 사용가능여부를 손쉽게 확인합니다.

반환값

파일이름의 사용가능여부를 논리값(True 또는 False)로 반환합니다.

인수

FileName 사용가능여부를 확인할 파일이름입니다.

VBA 코드

Function ValidFileName(ByVal FileName As String) As Boolean
 
'############################################################
'파일이름을 윈도우에서 사용할 수 있는지 여부를 판단합니다.
'https://www.oppadu.com/vba-validfilename-함수/
'############################################################
 
Dim Arr As Variant: Dim Val As Variant
Dim Pnt As Long
 
Arr = Array("/", "\", ":", "*", "?", """", "<", ">", "|")
 
If InStr(1, FileName, ":\") > 0 Then
    Pnt = InStrRev(FileName, "\")
    FileName = Right(FileName, Len(FileName) - Pnt)
    Debug.Print FileName
End If
 
ValidFileName = True
 
For Each Val In Arr
    If InStr(1, FileName, Val) > 0 Then ValidFileName = False: Exit Function
Next
 
End Function
 
Sub 파일이름체크()
 
If ValidFileName(Sheet1.Range("F2").Value) = True Then
    MsgBox "사용가능한 파일이름입니다."
Else
    MsgBox "사용 불가한 파일이름입니다.", vbCritical
End If
 
End Sub

세부내용

1. 윈도우에서 사용 불가능한 9개의 기호를 배열로 나열합니다.
Dim Arr As Variant: Dim Val As Variant
Dim Pnt As Long
 
Arr = Array("/", "\", ":", "*", "?", """", "<", ">", "|")
2.  입력한 파일명이 폴더명을 포함한 전체경로일 경우, 파일명만 따로 분리합니다.
  • 파일이름에 폴더명이 포함될 경우, 슬래쉬기호("\")로 인해 올바르지 않은 결과값이 반환됩니다.
If InStr(1, FileName, ":\") > 0 Then
    Pnt = InStrRev(FileName, "\")
    FileName = Right(FileName, Len(FileName) - Pnt)
    Debug.Print FileName
End If
3.  파일이름에 사용불가능한 9개의 기호가 포함되었는지 For Each 문으로 확인합니다.
  • 9개의 기호가 입력된 배열에서 각 기호를 하나씩 돌아가며 파일이름에 포함되어있는지 여부를 확인합니다.
  • Instr 함수에 대한 자세한 설명은 MS홈페이지 관련 링크를 참고하세요.
ValidFileName = True
 
For Each Val In Arr
    If InStr(1, FileName, Val) > 0 Then ValidFileName = False: Exit Function
Next
5 1 투표
게시글평점
1 댓글
Inline Feedbacks
모든 댓글 보기
1
0
여러분의 생각을 댓글로 남겨주세요.x