파일 이름 순번 저장 :: 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
실전 사용 예제
- 기존 파일이 존재할 경우
sPath = FileSequence("C:\오빠두엑셀.xlsx", 1, " 사본-")
sPath = "C:\오빠두엑셀 사본-1.xlsx" - 순번이 매겨진 기존 파일이 존재할 경우
sPath = FileSequence("C:\오빠두엑셀.xlsx", 1, " 사본-")
sPath = "C:\오빠두엑셀 사본-2.xlsx" '오빠두엑셀 사본-1.xlsx 가 존재하므로 순번이 2로 매겨집니다.
명령문 동작원리 단계별 알아보기
- 입력받은 파일경로의 마침표(.) 위치를 확인하여 폴더경로, 파일이름, 확장자를 구분합니다.
- 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
- 파일경로에 순번을 1씩 더해가며 순번을 매긴 파일이름이 존재하지 않을때까지 작업을 반복합니다.
최초순번(기본값: 1)을 시작으로 파일이름에 순번을 1씩 더하며 파일이름이 존재하지 않을때까지 반복합니다. (예: 파일1, 파일2, 파일3...)
순번을 매긴 파일이름이 존재하지 않으면, 해당 파일이름을 함수의 결과값으로 반환한 뒤 함수를 종료합니다.Do Until FileExists(newPath) = False Sequence = Sequence + 1 newPath = Path & Sequence & Ext Loop FileSequence = newPath
- 기존 파일이 존재할 경우