파일명과 확장자를 분리해주는 명령문 :: SplitFileExt 함수
구문
SplitFileExt ( 파일명 )
설명
엑셀 SplitFileExt 함수는 문자열 또는 배열로 입력된 전체 파일경로에서 파일이름과 확장자를 분리하여 배열로 반환하는 함수입니다.
만약 입력된 파일경로가 배열일경우, 기존 배열의 최소/최대 위치와 동일한 크기로 결과값이 출력됩니다.
출력되는 배열은 2차원의 배열입니다. 첫번째값은 파일명(또는 확장자를 제외한 파일경로), 두번째 값은 확장자입니다. 예를 들어 "C:\바탕화면\예제파일.xlsx" 라는 파일경로를 분리할 경우 아래와 같이 출력됩니다.
- Array = SplitFileExt("C:\바탕화면\예제파일.xlsx") '// 함수 입력
- Array (0, 0) = "C:\바탕화면\예제파일" '// 첫번째값 : 파일경로
- Array (0,1) = ".xlsx" '// 두번째값 : 확장자

만약 인수로 올바르지 않은 파일경로가 입력되었을경우, '올바른 파일경로 또는 파일명을 입력하세요."라는 오류메세지와 함께 명령문이 종료됩니다.
예제파일 다운로드
오빠두엑셀의 강의 예제파일은 여러분을 위해 자유롭게 제공하고 있습니다.
- [VBA예제] SplitFileExt 명령문예제파일
SplitFileExt 명령문 전체 코드
'############################################################### '오빠두엑셀 VBA 사용자지정함수 (https://www.oppadu.com) '▶ SplitFileExt 함수 '▶ 배열 또는 String으로 받아온 확장자가 포함된 파일경로를 파일이름과 확장자로 분리합니다. (2차원 배열, 0 - 파일명, 1 - 확장자) '▶ 인수 설명 '_____________Files : 확장자를 분리할 배열 또는 파일명입니다. '############################################################### Function SplitFileExt(Files As Variant) As Variant Dim i As Long Dim sFile As String Dim vaArr As Variant On Error GoTo ErrHandler: '// 파일 타입을 확인합니다. 배열 또는 기타 문자열일 경우 If TypeName(Files) = "Variant()" Then '// 입력 형식이 배열일 경우 ReDim vaArr(LBound(Files) To UBound(Files), 0 To 1) For i = LBound(Files) To UBound(Files) sFile = Files(i) vaArr(i, 0) = Left(sFile, InStrRev(sFile, ".") - 1) vaArr(i, 1) = Right(sFile, Len(sFile) - InStrRev(sFile, ".") + 1) Next Else '// 입력 형식이 기타 문자열일 경우 ReDim vaArr(0, 1) vaArr(0, 0) = Left(Files, InStrRev(Files, ".") - 1) vaArr(0, 1) = Right(Files, Len(Files) - InStrRev(Files, ".") + 1) End If SplitFileExt = vaArr Exit Function ErrHandler: MsgBox "올바른 파일경로 또는 파일명을 입력하세요." & sFile End End Function
SplitFileExt 함수 상세설명
사용예제
Sub Test() Dim sPath As String Dim vPath As Variant sPath = Sheet1.Range("B3").Value vPath = SplitFileExt(sPath) Sheet1.Range("C6").Value = vPath(0, 0) Sheet1.Range("C7").Value = vPath(0, 1) MsgBox "파일명과 확장자를 분리하였습니다." & vbNewLine & _ "파일명 :" & vPath(0, 0) & vbNewLine & _ "확장자 :" & vPath(0, 1) End Sub
인수설명
SplitFiltExt 명령문에는 총 1개의 인수가 들어갑니다.
인수 설명 Files
[Variant]확장자를 분리할 경로가 입력된 '문자열' 또는 '배열' 입니다. 명령문 동작원리
입력된 전체 파일경로의 우측에서부터 마침표(.) 의 위치를 찾은 뒤, 마침표의 위치를 기준으로 좌측은 파일경로, 우측은 확장자로 분리하여 결과값을 출력합니다.
VBA에서는 InstrRev 함수를 사용하여 문자열의 우측에서부터 특정 문자열을 검색할 수 있습니다. InstrRev에 관련된 자세한 내용은 MS홈페이지 관련링크를 참고하세요.
- Files로 받아온 인수의 형식을 확인합니다. '배열' 또는 '문자열'일 경우를 구분합니다.
If TypeName(Files) = "Variant()" Then '// 입력된 형식이 배열일 경우 Else '// 입력된 형식이 그외 형식(문자열)일 경우 End If
- 입력된 인수가 '배열'형식일 경우 입력된 배열의 최소/최대위치와 동일한 크기의 배열을 생성합니다. 이후 For문을 통해 배열의 최소위치부터 최대위치까지 돌아가며 파일명과 확장자를 분리한 뒤, 생성된 배열에 추가합니다.
ReDim vaArr(LBound(Files) To UBound(Files), 0 To 1) For i = LBound(Files) To UBound(Files) sFile = Files(i) vaArr(i, 0) = Left(sFile, InStrRev(sFile, ".") - 1) vaArr(i, 1) = Right(sFile, Len(sFile) - InStrRev(sFile, ".") + 1) Next
- 입력된 인수가 '문자열'형식일 경우 1개의 값만 가진 배열을 생성한 뒤, 해당 배열에 값을 추가합니다.
ReDim vaArr(0, 1) vaArr(0, 0) = Left(Files, InStrRev(Files, ".") - 1) vaArr(0, 1) = Right(Files, Len(Files) - InStrRev(Files, ".") + 1)
- 명령문 동작 중 오류가 발생할경우, "올바른 파일경로 또는 파일명을 입력하세요. - '파일경로'" 안내메세지를 띄운 후 명령문을 종료합니다.
On Error GoTo ErrHandler: ErrHandler: MsgBox "올바른 파일경로 또는 파일명을 입력하세요." & sFile End
- Files로 받아온 인수의 형식을 확인합니다. '배열' 또는 '문자열'일 경우를 구분합니다.