엑셀 SplitFileExt 명령문 사용법 및 전체 명령문 :: 파일 확장자 분리

파일경로에서 순수 파일경로(파일명)과 확장자를 분리하는 SplitFileExt 함수의 사용법 및 전체명령문 동작원리를 알아봅니다.

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

파일명과 확장자를 분리해주는 명령문 :: SplitFileExt 함수

구문

SplitFileExt ( 파일명 )

설명

엑셀 SplitFileExt 함수는 문자열 또는 배열로 입력된 전체 파일경로에서 파일이름과 확장자를 분리하여 배열로 반환하는 함수입니다.

만약 입력된 파일경로가 배열일경우, 존 배열의 최소/최대 위치와 동일한 크기로 결과값이 출력됩니다.

출력되는 배열은 2차원의 배열입니다. 첫번째값은 파일명(또는 확장자를 제외한 파일경로), 두번째 값은 확장자입니다. 예를 들어 "C:\바탕화면\예제파일.xlsx" 라는 파일경로를 분리할 경우 아래와 같이 출력됩니다.

  • Array = SplitFileExt("C:\바탕화면\예제파일.xlsx")  '// 함수 입력
  • Array (0, 0) = "C:\바탕화면\예제파일"  '// 첫번째값 : 파일경로
  • Array (0,1) =  ".xlsx"  '// 두번째값 : 확장자
엑셀 파일 확장자 분리 엑셀 SplitFileExt 함수
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홈페이지 관련링크를 참고하세요.

  1. Files로 받아온 인수의 형식을 확인합니다. '배열' 또는 '문자열'일 경우를 구분합니다.
    If TypeName(Files) = "Variant()" Then
      '// 입력된 형식이 배열일 경우
    Else
      '// 입력된 형식이 그외 형식(문자열)일 경우
    End If
  2. 입력된 인수가 '배열'형식일 경우 입력된 배열의 최소/최대위치와 동일한 크기의 배열을 생성합니다. 이후 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
  3. 입력된 인수가 '문자열'형식일 경우 1개의 값만 가진 배열을 생성한 뒤, 해당 배열에 값을 추가합니다.
        ReDim vaArr(0, 1)
        vaArr(0, 0) = Left(Files, InStrRev(Files, ".") - 1)
        vaArr(0, 1) = Right(Files, Len(Files) - InStrRev(Files, ".") + 1)
  4. 명령문 동작 중 오류가 발생할경우, "올바른 파일경로 또는 파일명을 입력하세요. - '파일경로'" 안내메세지를 띄운 후 명령문을 종료합니다.
    On Error GoTo ErrHandler:
     
    ErrHandler:
    MsgBox "올바른 파일경로 또는 파일명을 입력하세요." & sFile
    End
0 0 투표
게시글평점
0 댓글
Inline Feedbacks
모든 댓글 보기
0
여러분의 생각을 댓글로 남겨주세요.x