안녕하세요, 오늘 포스팅 할 내용은 폴더링을 한꺼번에 할 수 있는 매크로를 어떻게 만드는지에 대한 내용입니다. 업무를 하시다가, 한꺼번에 폴더링을 하고 싶을 때가 있는데, 일일히 그 상위 폴더로 가서 폴더를 만드는 단순 업무를 줄이기 위한 매크로 입니다.
업무의 효율성을 높이기 위해서, 폴더링을 한꺼번에 할 수 있는 매크로를 만들어 보도록 하겠습니다. 쉬운 이해를 돕기 위해서 하나 하나 예제를 통해서 설명 드리도록 하겠습니다.
1. 폴더링을 위한 Excel 기본적인 Setting.
: 아래와 같이, Column A, B에, 각 Value가 들어갈 장소를 먼저 선정을 합니다. Column "A"에는, 만들고 싶어하는 폴더명을 입력하고, Column "B"에는, 그 폴더가 위치한 폴더명을 입력을 합니다.
- 코드를 실행하기 위해서, 아래와 같이 쉬운 예제 소스를 만들어 보겠습니다. 아래 예제를 보면, TEST01~03까지의 폴더명을 만들거고, 그 폴더가 위치한 폴더는, D:\ 입니다.
2. Excel Macro Coding
: 위 Macro를 실행할 Source 예제를 마련을 하고, 본격적으로 Excel Macro Coding을 짜보도록 하겠습니다. 저는 여러가지의 경우의 수를, If 문을 통해서 통제하려고 했습니다. 다른 여러가지 방법으로 code를 짤 수 있으니, 제 Code는 구현하실 때 참조만 해주세요.
1) 폴더명에 따라, 폴더를 생성하는 Code
================================================================================
Sub Folder_Maker ()
Dim Folder01 As Range // 폴더명을 담을 Range 하나를 선언해 줌
Set Folder01 = Range(Cells(Rows.Count, "A").End(xlUp), "A2") // 폴더명을 Folder01에 담음.
For Each Item In Folder01 // 폴더명을 For Each 문으로 순환
If Item <> "" Then // Item 이 빈값이 아니면 실행하라는 IF 문
// 폴더명이 위치할 폴더명에 "\" 이 있는지 검사하고, 있으면, 그냥 폴더명만 입력
If Right(Item.Offset(, 1), 1) = "\" Then
checkedpath = Item
' MsgBox checkedpath // 폴더명 잘 들어갔는지, 확인하는 Message Box (현재 비동기화)
Else
// 폴더명이 위치할 폴더명에 "\" 이 있는지 검사하고, 없으면, 폴더명 + "\" 를 입력
checkedpath = "\" & Item
End If
Final_path = Item.Offset(, 1) & checkedpath & "\" // 폴더명이 위치할 폴더명에 "\" 이 있는지 검사
If Item.Offset(, 1).Address <> "$B$1" Then // 폴더명이 위치할 폴더명가 Header 인지 검사
If Item.Offset(, 1) <> "" Then
If Len(Dir(Final_path, vbDirectory)) = 0 Then // 폴더가 없으면 폴더를 생성하라고 명령
MkDir Final_path
End If
End If
End If
End If
Next Item
// 모든 작업이 끝났으면, Message Box를 뱉어냄.
MsgBox "The folders that you want to make have been made (당신이 원하는 폴더가 모두 생성되었습니다.)"
End Sub
================================================================================
2) 작업이 끝나고, Reset 하는 Code
: 좀 단순하게, "A2"과 "B2" 의 값 여부로 삭제를 하는 명령문을 짜봤습니다. 일단, 작업을 할 때는 꼭 둘중에 하나는 들어가 있을 확률이 거의 99% 이상이라고 생각을 한 거죠. 근데, 둘다 비워놓고, 3,4번째 줄에 값이 있으면 Reset이 안되는 점이 좀 애매하긴 하는데, 이런 확률이 얼마나 있을까 하네요. 이렇게 단순하게 짰지만, Header의 삭제를 방지하기 위해서 어느정도 고민한 Code 입니다. 다른 좋은 Code 방법이 있으시면 공유 부탁 드립니다.
================================================================================
Dim Final_Range1 As Range
If Cells(2, 1) = 0 Then // 조건을 "A2"에 값이 있는지 검사
Else
// "A2"에 값이 있으면, 전체 범위를 잡아서, 삭제 처리함.
Set Final_Range1 = Range(Cells(Rows.Count, "A").End(xlUp), "B2")
Final_Range1.Select // 범위를 선택
Selection.Clear // 범위를 삭제
End If
If Cells(2, 2) = 0 Then // 조건을 "B2"에 값이 있는지 검사
Else
// "B2"에 값이 있으면, 전체 범위를 잡아서, 삭제 처리함.
Set Final_Range1 = Range(Cells(Rows.Count, "B").End(xlUp), "A2")
Final_Range1.Select // 범위를 선택
Selection.Clear // 범위를 삭제
End If
End Sub
================================================================================
3. Excel Macro Code를 구현하기 위한 Form 만들기
: 그냥 "F5" 를 Macro Code를 Run 할 수 있지만, 그러면, 약간, UI가 떨어지기 때문에, Form을 만들어서, 좀 더 편의성을 높여보도록 하겠습니다. 기본적인 형태는 아래와 같습니다. Form Title도 수정하였습니다.
- 각 버튼을 클릭하여, 위에 구현한 Code를 삽입하면 끝입니다.
================================================================================
Private Sub Folder_Making_CommandButton_Click() // Run 버튼의 Code 삽입 공간입니다.
' 폴더링 하는 Code는 여기에 삽입하시면 됩니다.
End Sub
Private Sub Reset_CommandButton_Click() // Reset 버튼의 Code 삽입 공간입니다.
' Reset 하는 Code는 여기에 삽입하시면 됩니다.
End Sub
================================================================================
- 간단하게, UserForm1을 실행시키는 Macro Code (UserForm1.show)를 짜시고, 그것을 실행하면 위 Form이 실행이 되고, 각 버튼을 눌러 실행을 시켜 보면 됩니다. Folder Making Button을 누르면 아래와 같이 폴더가 생성이 되는 걸 확인 하실 수 있습니다. (Reset 구현은 따로 Demostration 하지 않도록 하겠습니다.)
이상입니다. 지금까지 폴더링을 한꺼번에 할 수 있는 매크로를 어떻게 만드는지에 대한 내용으로 포스팅을 작성하였습니다. 정말 단순한 작업지만, 이렇게 Macro로 구현을 하면, 스트레스도 덜하고, 먼가, 배워가는 느낌도 동시에 들 수 있다라고 생각합니다. 사실 일하거나, 생활, 공부를 하면서 폴더링은 거의 건수가 있으면 하는 것입니다. 그 건수 때 마다 들이는 시간을 Saving 할 수 있다면, 더할나위 좋은 시간 투자라고 생각합니다. 오늘도 Macro 배우느라고 수고하셨고, 다음 Posting에는 더 알찬 내용으로 돌아오도록 하겠습니다. 항상 말씀 드리지만, 같이 성장하시죠! 감사합니다.
제 Posting이 조금이나마 정보 전달에 도움이 되셨길 빌며, 되셨다면, 구독, 댓글, 공감 3종 세트 부탁 드립니다. 감사합니다.
[저작권이나, 권리를 침해한 사항이 있으면 언제든지 Comment 부탁 드립니다. 검토 후 수정 및 삭제 조치 하도록 하겠습니다. 그리고, 기재되는 내용은 개인적으로 습득한 내용이므로, 혹 오류가 발생할 수 있을 가능성이 있으므로, 기재된 내용은 참조용으로만 봐주시길 바랍니다. 게시물에, 오류가 있을때도, Comment 달아 주시면, 검증 결과를 통해, 수정하도록 하겠습니다.]
'엑셀 (Excel)' 카테고리의 다른 글
Excel 엑셀 매크로 - 이름 관리자 오류 및 중복 해결 Macro (0) | 2021.03.14 |
---|---|
Excel 엑셀 매크로 Activate + Deactivate 이벤트 만들기 (0) | 2021.03.14 |
Excel 엑셀 매크로 Progress Bar 만들기 (2) | 2021.03.13 |
Excel 엑셀 매크로 Sheet Name 불러서 기록하기 (0) | 2021.03.13 |
Excel 엑셀 매크로 Visual Basic 편집기 코드 암호 설정 및 유용한 단축키 (0) | 2021.03.11 |
댓글