FileSequence 함수 사용법 및 전체 명령문 :: 파일이름을 순번으로 저장

파일이름이 중복되지 않도록 순번을 매기는 FileSequence 함수의 사용법 및 전체명령문 동작원리를 알아봅니다.

작성자 :
오빠두엑셀
최종 수정일 : 2021. 05. 04. 20:19
URL 복사
메모 남기기 : (7)

파일 이름 순번 저장 :: FileSequence 함수 사용법 총정리

엑셀 FileSequence 명령문 목차 바로가기
요약

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

명령문 구문
= FileSequence ( 파일경로, [시작번호], [구분자] )
사용된 인수 및 변수 알아보기
인수 설명
파일경로
[Range]
순번을 매길 파일 경로입니다. 확장자를 포함한 전체 경로를 입력합니다.
시작번호
[Long, 선택인수]
순번의 시작번호입니다. 기본값은 1입니다.
구분자
[String, 선택인수]
파일명과 순번을 구분할 구분값입니다. 기본값은 하이픈(-) 입니다.

예제파일 다운로드

오빠두엑셀의 강의 예제파일은 여러분을 위해 자유롭게 제공하고 있습니다.

  • [VBA예제] FileSequence :: 파일이름 순번으로 저장하기
    예제파일

상세 설명

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

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

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

파일 이름 순번 저장, FileSequence 명령문 동작원리

FileSequence 함수 전체 코드
'###############################################################
'오빠두엑셀 VBA 사용자지정함수 (https://www.oppadu.com)
'▶ FileSequence 함수
'▶ 기존 파일이 존재할 경우 순번을 매겨 파일을 저장합니다.
'▶ 인수 설명
'_____________FilePath	: 확장자를 포함한 파일 경로입니다.
'_____________Sequence	: 순번을 매길 시작번호입니다.
'_____________Delimiter	: 파일명과 순번을 구분할 구분자입니다.
'▶ 보조 명령문 안내 : FileExist 함수
'###############################################################
 
Private Function FileSequence(FilePath As String, Optional Sequence As Long = 1, Optional Delimiter As String = "-") As String
 
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 & Delimiter & Sequence & Ext
 
Do Until FileExists(newPath) = False
    Sequence = Sequence + 1
    newPath = Path & Delimiter & Sequence & Ext
Loop
 
FileSequence = newPath
 
End Function
실전 사용 예제
  1. 기존 파일이 존재할 경우
    sPath = FileSequence("C:\오빠두엑셀.xlsx", 1, " 사본-")
    sPath = "C:\오빠두엑셀 사본-1.xlsx"
  2. 순번이 매겨진 기존 파일이 존재할 경우
    sPath = FileSequence("C:\오빠두엑셀.xlsx", 1, " 사본-")
    sPath = "C:\오빠두엑셀 사본-2.xlsx" '오빠두엑셀 사본-1.xlsx 가 존재하므로 순번이 2로 매겨집니다.
명령문 동작원리 단계별 알아보기
  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

관련링크 : MS 홈페이지 InstrRev 명령문 사용법(영문)

5 3 투표
게시글평점
7 댓글
Inline Feedbacks
모든 댓글 보기
7
0
여러분의 생각을 댓글로 남겨주세요.x