VBA 내에 있는 MkDir 이용하면 특정 경로에 폴더를 생성할 수 있어요
| Sub SampleCode1() MkDir "C:\Test" End Sub | cs |
하지만
MkDir 을 사용하다 보면 몇 가지 불편한 점이 있죠
폴더가 이미 존재하면 오류 발생
상위폴더가 존재하지 않으면 오류 발생
(핵심)폴더 안에 폴더를 여러번 생성해야할 경우 각각 MkDir 실행 필요
그래서 그냥 만능폴더 생성함수를 만들었어요
코드부터 보시죠
| Function MkDirAll(Path) As String On Error GoTo Err If Right(Path, 1) <> "\" Then Path = Path & "\" Do n = InStr(n + 1, Path, "\") p = Left(Path, n) If Dir(p, vbDirectory) = "" Then MkDir p Loop Until n = 0 Err: If Err.Number <> 0 Then MkDirAll = Err.Description End Function
| cs |
위 코드를 사용하는 방법은 아래와 같아요
| Sub SampleCode4() MkDirAll "C:\업무\2023년\02월\계획\" End Sub | cs |
이렇게 하면 알아서
C 드라이브 안에 업무 폴더를 만들고,
그 안에 2023년 폴더를 만들고
그 안에 02월 폴더를 만들고
그 안에 계획 폴더를 만들어요
만약 업무 폴더와 2023년 폴더가 있었다면 그 부분은 건너 뛰고
02월 폴더와, 계획 폴더만 알아서 만든다. 오류가 나지 않아요~!!
하지만, 인생은 늘 맘대로 안되는 것
오류가 나는 경우가 있어요
폴더명에 사용하면 안되는 특수기호를 썼다던가...?
폴더 생성 권한이 없다던가...?
이 경우 아래와 같이 사용하면 됩니다
| Sub SampleCode5() Dim s As String s = MkDirAll("C:\테스트*") ' 폴더명에 * 특수기호는 사용 불가하여 오류 발생 If s <> "" Then MsgBox s, vbCritical End Sub | cs |
이렇게 쓰면 오류가 발생하는 경우 메세지박스를 띄워줍니다.
이것을 종합해보면 아래와 같아요.
위 코드와 설명이 담긴 파일은 누구나 무료로 다운로드 받으실 수 있어요.
그럼 모두 화이팅입니다..!!
엑셀 파일 다운로드하기
VBA 내에 있는 MkDir 이용하면 특정 경로에 폴더를 생성할 수 있어요
하지만
MkDir 을 사용하다 보면 몇 가지 불편한 점이 있죠
폴더가 이미 존재하면 오류 발생
위에서 Sample Code 1 코드를 실행했다면 C드라이브 밑에 Test 폴더가 생성되었을텐데 다시 한 번 실행하면 아래와 같은 오류가 발생해요ㅠㅠ
이미 폴더가 존재하는 경우 오류가 발생하기 때문에 예외 처리 필요해서 불편
상위폴더가 존재하지 않으면 오류 발생
아래 Sample Code 2 코드를 실행하면 오류가 발생
💡 C:\업무\2023년\01월 아래에 실적 폴더만 생성하려고 하기 때문 → 상위 폴더를 모두 생성한 뒤 Sample Code 2 를 실행해야실적 폴더가 생성
(핵심)폴더 안에 폴더를 여러번 생성해야할 경우 각각 MkDir 실행 필요
위 Sample Code 2 코드에서 업무 폴더부터 존재하지 않는 경우 아래와 같이 해야 해요
그래서 그냥 만능폴더 생성함수를 만들었어요
코드부터 보시죠
위 코드를 사용하는 방법은 아래와 같아요
이렇게 하면 알아서
C 드라이브 안에 업무 폴더를 만들고,
그 안에 2023년 폴더를 만들고
그 안에 02월 폴더를 만들고
그 안에 계획 폴더를 만들어요
만약 업무 폴더와 2023년 폴더가 있었다면 그 부분은 건너 뛰고
02월 폴더와, 계획 폴더만 알아서 만든다. 오류가 나지 않아요~!!
하지만, 인생은 늘 맘대로 안되는 것
오류가 나는 경우가 있어요
폴더명에 사용하면 안되는 특수기호를 썼다던가...?
폴더 생성 권한이 없다던가...?
이 경우 아래와 같이 사용하면 됩니다
이렇게 쓰면 오류가 발생하는 경우 메세지박스를 띄워줍니다.
이것을 종합해보면 아래와 같아요.
위 코드와 설명이 담긴 파일은 누구나 무료로 다운로드 받으실 수 있어요.
그럼 모두 화이팅입니다..!!
엑셀 파일 다운로드하기