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

반환값
파일이름의 사용가능여부를 논리값(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