본문 바로가기
엑셀 (Excel)/엑셀 매크로 VBA

Excel 엑셀 매크로 폴더 한꺼번에 생성하기 + Reset 은 덤 + 폼 구성까지

by ★√★ 2021. 3. 14.

안녕하세요, 오늘 포스팅 할 내용은  폴더링을 한꺼번에 할 수 있는 매크로를 어떻게 만드는지에 대한 내용입니다. 업무를 하시다가, 한꺼번에 폴더링을 하고 싶을 때가 있는데, 일일히 그 상위 폴더로 가서 폴더를 만드는 단순 업무를 줄이기 위한 매크로 입니다.

 

 

 업무의 효율성을 높이기 위해서, 폴더링을 한꺼번에 할 수 있는 매크로를 만들어 보도록 하겠습니다. 쉬운 이해를 돕기 위해서 하나 하나 예제를 통해서 설명 드리도록 하겠습니다. 

 

1. 폴더링을 위한 Excel 기본적인 Setting. 

: 아래와 같이, Column A, B에, 각 Value가 들어갈 장소를 먼저 선정을 합니다. Column "A"에는, 만들고 싶어하는 폴더명을 입력하고, Column "B"에는, 그 폴더가 위치한 폴더명을 입력을 합니다. 

 

 

폴더링-매크로-세팅1
폴더링-매크로

 

- 코드를 실행하기 위해서, 아래와 같이 쉬운 예제 소스를 만들어 보겠습니다. 아래 예제를 보면, TEST01~03까지의 폴더명을 만들거고, 그 폴더가 위치한 폴더는, D:\ 입니다. 

 

폴더링-매크로-세팅2
폴더링-매크로

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 



================================================================================

 

폴더링-매크로-코드1
폴더링-매크로-코드

 

- 간단하게, UserForm1을 실행시키는 Macro Code (UserForm1.show)를 짜시고, 그것을 실행하면 위 Form이 실행이 되고, 각 버튼을 눌러 실행을 시켜 보면 됩니다. Folder Making Button을 누르면 아래와 같이 폴더가 생성이 되는 걸 확인 하실 수 있습니다. (Reset 구현은 따로 Demostration 하지 않도록 하겠습니다.)

 

폴더링-매크로-구현
폴더링-매크로-구현
폴더링-매크로-결과

 

 이상입니다. 지금까지 폴더링을 한꺼번에 할 수 있는 매크로를 어떻게 만드는지에 대한 내용으로 포스팅을 작성하였습니다. 정말 단순한 작업지만, 이렇게 Macro로 구현을 하면, 스트레스도 덜하고, 먼가, 배워가는 느낌도 동시에 들 수 있다라고 생각합니다. 사실 일하거나, 생활, 공부를 하면서 폴더링은 거의 건수가 있으면 하는 것입니다. 그 건수 때 마다 들이는 시간을 Saving 할 수 있다면, 더할나위 좋은 시간 투자라고 생각합니다. 오늘도 Macro 배우느라고 수고하셨고, 다음 Posting에는 더 알찬 내용으로 돌아오도록 하겠습니다. 항상 말씀 드리지만, 같이 성장하시죠! 감사합니다. 

 

제 Posting이 조금이나마 정보 전달에 도움이 되셨길 빌며, 되셨다면, 구독, 댓글, 공감 3종 세트 부탁 드립니다. 감사합니다. 

[저작권이나, 권리를 침해한 사항이 있으면 언제든지 Comment 부탁 드립니다. 검토 후 수정 및 삭제 조치 하도록 하겠습니다. 그리고, 기재되는 내용은 개인적으로 습득한 내용이므로, 혹 오류가 발생할 수 있을 가능성이 있으므로, 기재된 내용은 참조용으로만 봐주시길 바랍니다. 게시물에, 오류가 있을때도, Comment 달아 주시면, 검증 결과를 통해, 수정하도록 하겠습니다.]

728x90

댓글


// 내부링크를 현재창으로 열기 // Open internal links in same tab