엑셀 함수 - VBA 명령문 (UDF)FileSeuence 함수 사용법

FileSequence 함수 (순번으로 파일저장) :: VBA 사용자 지정 함수

예제파일

요약

사용자 지정함수인 FileSequence 함수는 파일을 순번에 따라 따라 저장하도록 도와주는 함수입니다.

설명

FileSequence 함수는 사용자가 저장하려는 파일을 순번에따라 저장할 수 있도록 도와주는 함수입니다. 해당 함수에는 순번을 매긴 파일경로가 존재하는지 여부를 확인해아 하므로, 추가로 FileExists 함수가 사용됩니다.

본 예제에서는 GetDesktopPath 함수를 이용하여 사용자의 바탕화면 경로를 받아온 뒤, '복사본' 이라는 이름으로 순번에따라 저장하는 매크로를 작성하였습니다.

윈도우의 파일명에는 사용할 수 없는 몇가지 특수기호가 있는데요. 만약 입력한 파일명이 유효한지 확인하려면 ValidFileName 함수를 사용할 수 있습니다.

VBA FileSequence 함수 사용법

FileSequence 함수를 사용하면 순번에따라 파일을 저장할 수 있습니다.

반환값

원본 파일이름의 존재여부를 확인한 뒤, 순번을 매긴 파일이름을 String 형태로 반환합니다.

인수

FilePath (String)순번을 매길 파일 경로입니다.
Sequence (Long)[선택인수] 최초 순번을 지정합니다. 기본값은 1 입니다.

VBA 코드

Function FileSequence(FilePath As String, Optional Sequence As Long = 1) as String
 
'########################################################
'지정한 파일이름에 순번을 매깁니다.
'https://www.oppadu.com/vba-filesequence-함수/
'########################################################
 
Dim Ext As String: Dim Path As String: Dim newPath As String
Dim Pnt As Long
 
Pnt = InStrRev(FilePath, ".")
Path = Left(FilePath, Pnt - 1)
Ext = Right(FilePath, Len(FilePath) - Pnt + 1)
 
newPath = Path & Sequence & Ext
 
Do Until FileExists(newPath) = False
    Sequence = Sequence + 1
    newPath = Path & Sequence & Ext
Loop
 
FileSequence = newPath
 
End Function
 
Sub 파일저장()
 
Dim strPath As String
Dim newPath As String
 
strPath = GetDesktopPath & "복사본.xlsm"
newPath = FileSequence(strPath, 1)
 
ThisWorkbook.SaveAs newPath
 
MsgBox newPath & "경로로 파일저장을 완료하였습니다."
 
End Sub

세부내용

1. 입력받은 파일경로의 마침표(.) 위치를 확인하여 폴더경로, 파일이름, 확장자를 구분합니다.
  • Pnt : 확장자를 분리할 마침표 위치입니다.
  • Path : 입력받은 파일경로에서 확장자만 분리한 파일경로입니다.
  • Ext : 파일 확장자입니다. (예: jpg, xlsx 등)
Dim Ext As String: Dim Path As String: Dim newPath As String
Dim Pnt As Long
 
Pnt = InStrRev(FilePath, ".")
Path = Left(FilePath, Pnt - 1)
Ext = Right(FilePath, Len(FilePath) - Pnt + 1)
 
newPath = Path & Sequence & Ext
2. 파일경로에 순번을 1씩 더해가며 순번을 매긴 파일이름이 존재하지 않을때까지 작업을 반복합니다.

최초순번(기본값: 1)을 시작으로 파일이름에 순번을 1씩 더하며 파일이름이 존재하지 않을때까지 반복합니다. (예: 파일1, 파일2, 파일3...)

순번을 매긴 파일이름이 존재하지 않으면, 해당 파일이름을 함수의 결과값으로 반환한 뒤 함수를 종료합니다.

Do Until FileExists(newPath) = False
    Sequence = Sequence + 1
    newPath = Path & Sequence & Ext
Loop
 
FileSequence = newPath

관련 기초함수 설명 | by 오빠두엑셀

VaildFileName 사용법
엑셀 ValidFileName 함수 사용법 :: 파일명 사용가능여부 확인
예제파일 ValidFileName 함수는 파일이름의 사용가능여부를 확인하는 함수입니다. ValidFileName 함수는 지정한 파일이름이 윈도우에서 사용가능한지 여부를 확인하는 함수입니다. 윈도우에서는 아래 9개의 기호를 ...
GetDesktopPath 사용법
GetDesktopPath 함수 (VBA) :: 바탕화면 경로를 받아오는 함수
예제파일 GetDesktopPath 함수는 사용자 컴퓨터의 바탕화면 경로를 출력하는 함수입니다. GetDesktopPath 함수는 사용자 컴퓨터의 바탕화면 경로를 출력하는 함수입니다. 바탕화면 경로는 윈도우의 ...

관련공식 포스트 | by 오빠두엑셀

글을 발견하지 못했습니다.
별점주기 (5 / 1)

3
댓글 남기기

avatar
1 Comment Thereads
2 Thread replies
2 팔로워
 
가장 좋아요가 많은 댓글
가장 인기많은 댓글
2 작성자
오빠두엑셀David 최근 작성자
  현재 페이지 댓글알림 신청  
알림 설정
David
손님
David
별점주기 :
     

안녕하세요. 올려주신 자료 정말 유용하게 잘 보고 있습니다. 언제나 감사합니다.
VBA코드를 복붙했을때 컴파일 에러가 뜹니다. & sequence & 부분에서요 ㅠㅠ 왜 그런걸까요?