[엑셀 VBA] 자동화의 딜레마

작성자
dra****
작성일
2021-05-25 14:46
조회
1977

엑셀 VBA를 가벼히 여기다가 어려움을 깨닫고, 제 사업체의 자동화를 위해서 마음 먹고, VBA를 공부했습니다.

하루 12시간 씩 동영상 강의 보고, 기록하고, 제 업무를 대상으로 적용시켜 보고, 마이크로소프트 문서를 끼고 살았습니다.

3개월 정도 지나니 길이 보이더군요. 5개월째 되어 가는 지금, 새로운 길로 접어 들어가고 있습니다.

질문란에 올라오는 내용들을 보면 많이 안타깝습니다.

그냥 코드 하나 딸랑 올려 놓고 분석해 달라고 올라오는 글에는 할 말을 잃었습니다.

누가 암호같이 판독하기 어려운 코드를 분석해 알려 주겠습니까?

어떠한 본인의 논리나 로직 하나도 없이 매크로 자동 생성기로 만든 코드 하나 올려 놓고 해달라 합니다.

이곳은 엑셀의 실력을 높이려 모여드는 곳이지 코딩을 대신 해달라고 오는 곳은 아니라 생각합니다. (제 생각이 틀렸다면 죄송)

다른 분들의 고민을 보면서 제 실력을 향상시키고, 또 정보를 얻고 하는 것이 그 목적입니다.

다른 분들의 고민이 저의 고민이기도 하니까요.

마음 같아서야 코딩을 다 해드리고 싶지만 그럴 여력이 있는 것도 아니니. 보면 5분짜리인지 아님 수 시간을 요구하는 코딩인지 나옵니다. 물론 모르는 것은 저도 답을 못하는 것이 당연하고.

자동화를 하면 편하게 진행되는 것을 알지만, 어떻게 시작해야 할지도 모르는 분들도 계시고,

VBA를 공부하기 싫은 분들도 계시고. 선택의 문제라 생각합니다.

누구에게나 24시간이 주어지는데 나의 우선 순위가 무엇이냐에 따라 다른 것들을 미루거나 포기해야 하는 것이 인생사입니다.

오빠두님의 강좌가 사람들의 눈 높이를 너무 높여 놓았습니다. 기초력이 부족한 분들게 가령, 카톡 자동 발송 매크로 같은 것을 소개하니, 다운 받아 해보니 감동적이거든요. 그러다 보니 본인 회사의 업무에 적용시키고 싶으니 이것저것 변형해서 하려다 보니 잘 안되는 것이 당연한 것입니다. 그럼 바로 질문 올라 옵니다. "오빠두 강좌 ~~~에서 다운 받았는데 잘 안돼요. 어떻게 해요." 강좌에 대한 숙달을 위한 과제와 해법등과 같은 것을 제시해 주시면 도움이 되지 않을까 생각해 봅니다. 동영상 보면서 따라해볼 수 있도록 천천히 진행하는 것도 하나의 방법일 것입니다.

노력없이 거져 먹는 것은 없습니다. 이렇게도 해보고 저렇게 해보고, 몇날 몇일을 고민해서 해결하면 비로서 진정으로 내것이 되는 것입니다.

자동화를 원하시는 분들에게 조언 해 드립니다.

  1. VBA 기본 문법을 익히시기 바랍니다.
  2. 셀선택으로 부터 자유로워 질 만큼 숙달을 하세요.
  3. 2번을 하다 보면 Workbooks, Workbook, Worksheets, Worksheet, Range, Cells, Rows 개체에 관심을 갖게 될 것입니다.
  4. 3번의 단계를 하다 보면 Iteration에 대해서 이해를 하기 시작할 것입니다. Collections 개체를 이용할 수 있다는 말이겠지요.
  5. 다음에 배열과 Dictionary, Collection을 활용해서 시트의 셀들을 자유롭게 읽고 쓰는 법을 익히게 될 것입니다.
  6. 5번의 단계 정도 오면 UserForm과 ActiveX Control 들을 사용해서 자동화 하는 욕구가 생길 것입니다.
  7. 각각의 ActiveX Control 들에 대한 Property와 Method를 익히면서 폼디지인의 매력에 빠지게 될 것입니다.
  8. 다음, 엑셀로 구현할 수 있는 것들에 대한 주제를 찾아 하나씩 하나씩 익혀 나가면 됩니다. 가령 OutLook으로 메일 수 만개 보내기, 카톡으로 자동 발송하기, 그림 다루기, 이력서 자동화, 급여 명세서 자동화, 웹 크롤링 등등. 적어도 다른 사람의 코드를 이해하고 수정할 수 있는 단계가 되면, 웹에 널려 있는 수 많은 코드 들이 내것이 될 겁니다. 설마 HTML과 CSS도 모르는데 웹 크롤링한다고 하면 ... 그냥 웃지요.
  9. 이제 슬슬 내가 만든 코드를 한데 모아 사용하고 싶어질 것입니다. 이 단계가 Class를 공부해야 할 단계 입니다. 클래스를 만들어 두고 필요할 때 마다 불러 들이거나 Add-in에 넣어 두면 이전의 숙달된 코드들은 이미 내것이니, 그냥 가져다 쓰기만 하면 됩니다. 어차피 Excel VBA에 있는 Class는 Override가 되지 않기 때문에 나만의 새로운 Class를 만드는 것은 불가능합니다. 그냥 함수 집단 모아 놓은 용도로만.... 붕어빵 찍어내는 영상이나 개나 고양이 등장 시키는 내용, 심지어 자동차까지 열심히 봐야 소용 없습니다. 이미 시트에 데이터가 있는데 굳이 프로퍼티 설정을 해서 값을 집어 넣고 할 필요가 없는 것이지요.
  10. 여기까지 오면 Database에 관심을 가지게 될 겁니다. 이 부분이 사실 가장 어렵습니다. 유튜버들도 잘 올리지 않을 뿐 더러, 관련 문서 찾아 보는 것도 쉽지 않습니다. 내용도 어렵고, 용어도 어렵고. 이 단계를 넘어서면 엑셀의 장인이 되는 거지요. 설마 SQL도 모르는데 DB를 한다고 하면 ... 한숨만... 에휴
  11. 이쯤되면 파워쿼리가 쉽게 느껴지는 단계가 됩니다. 이제는 파워쿼리마져 자동화 하는 단계가 됩니다.

제 글에 속이 상하신 분들도 계실겁니다. 죄송합니다. 안타까워서 말씀 드렸습니다. 저를 포함한 많은 분들이 좀 더 실력이 향상되어 업무를 자동화 했으면 하는 바램에 주제 넘었습니다.

 

신고
스크랩
공유
회원등급 : 30레벨
포인트 : 4702 EP
전체 21

  • 2021-05-25 16:15

    @dra**** 님 매우 공감되는 글이네요.


    • 2021-05-25 16:35

      @눈사람 님 눈사람님도 아시라리 믿습니다.

      질문 올라오는 상당수 내용의 주제는 기능이나 함수지만, 실상은 VBA로 처리해햐 하는 것 들임을.


  • 2021-05-25 17:20

    @dra**** 님 정확한 말씀이십니다. 저도 이 홈페이지를 처음 왔을 때는 VBA 문외한이였지만..

    영상 강의 보면서 천천히 따라해보니 점점 숙달되더군요. 다른 보통 강의는 For문, 개체, If문.. 이런 것부터 시작하다보니 흥미를 느끼지 못했습니다. 제가 바로 업무에 사용할 수 있는 코딩을 배우고 싶었는데 그러질 못했거든요.

    그러다 여기 오고나서 흥미를 느끼고 제대로 배우기 시작했고, 특히 여기서 제공하는 스니펫으로 많은 도움 받았습니다. 스니펫만 있으면 나머지는 For문, If문 정도만 알아도 쉽게 해결할 수 있거든요..

    이것들을 내 업무에 어떻게 적용하는지는 본인의 능력이나 실력을 떠나, 의지의 차이라고 봅니다.

    만약 의지가 있으나 정말 시간이 부족해서 또는 너무나 중요하고 급히 해결해야 하는 일이여서 부득이하게 다른 사람의 도움을 받아 해결해야 한다면, 최소한의 정리는 해서 질문을 올리면 좋겠지만 가끔 그러지 못한 글을 보면 씁쓸할때가 있습니다.


    • 2021-05-25 23:38

      @더블유에이 님 절대적으로 공감합니다. 날때부터 모든 것을 아는 사람은 없습니다. 사실 저두 오빠두에 회원 가입한 것은 해결이 안되는 어떠한 문제를 오빠두님한테 물어 보기 위함이었습니다. 아직도 해결이 되지 못한 상황입니다. 머리 식힐 때 그 주제를 아직도 서핑해서 정보를 얻으려고 노력 중입니다. 제가 딱 한 개의 질문을 했는데, 제 질문을 이해하지 못한다는 반응이 많더군요.  이후 아무런 질문도 하지 않습니다.

      대신 얄팍하나마 알고 있는 내용을 공유하기로 결심했습니다. 이유는 오빠두님의 강의를 보고서 느낀바가 많았기에.

      그런데 질문의 내용을 보면, 수준은 초딩인데 대딩의 질문이 많음을 깨닫고 .... 에휴 ... 마음을 가라 앉히고 답하다 보니

      임계점에 달한듯 합니다. 질문하시는 분의 심경을 모르는 바는 아니나, 누군가의 시간과 노력을 원하신다면 최소한의 노력은 해 주시기를 바라는 것이지요. 님의 말씀하신 것처럼 "최소한의 정리"는 해서 답하시는 분들의 이해력을 높이시면 윈윈하리라 보는데. 너무 이기적인 질문이 많습니다.

      어느 분이 프린터 트레이 선택 질문을 하셨는데, 저도 너무 궁금해서 코딩해보고 싶은데 그런 프린터기를 가지고 있지 않아, 없는 임의의 프린터 드라어버 설치해보고 코딩을 해 보았습니다. 성공을 했습니만, 이미 어떠한 답변이 있기에 답을 달지 않았습니다. 비록 나이를 먹었지만 새로룬 지식에 대한 깨달음은 말로 표한 할 수 없는 쾌감입니다.

      그리고 ㄲㄹㄲㄹ님애 해법을 주신 듯 합니다. 최소한의 예의도 없는 질문에는 그냥 링크를 걸어 주면 될 듯 합니다. 공부를 해서 해결하든 말든 그것은 본인의 몫이니.

      그런데 하드코딩마저 마다 않고 답해주시는 바다와 같은 마음을 품은 분이 계시니.. 에휴 ... 존경 스럽습니다.

      주제는 함수지만 해법은 VBA인 경우가 대부분입니다. 답해주면 "제가 VBA를 잘 모르는데요"가 대부분입니다. 그럼 엑셀 함수 리스트 정도는 꽤차고 있어야 하는 것이 아닐까 합니다. 에휴.. 내일은 엑셀 함수 리스트라도 올려야 겠습니다.


  • 2024-04-07 07:04

    @dra**** 님 좋은 정보 감사합니다😄


  • 2024-08-29 05:32

    @dra**** 님 공감되네요


  • 2022-09-19 13:52

    @dra**** 님 좋은 정보 감사합니다


  • 2023-04-27 12:18

    @dra**** 님 공감하는 글 잘 읽었습니다.


  • 2021-05-28 19:36

    @dra**** 님 유용한 글 감사합니다. ㅠㅠ


  • 2023-01-15 13:54

    @dra**** 님 정보 감사합니다


  • 2024-05-22 17:25

    @dra**** 님 좋은 정보 감사 드립니다.


  • 2025-02-21 14:14

    @dra**** 님 좋은 정보 감사합니다


  • 2021-05-29 20:44

    @dra**** 님 진짜 다른데서는 찾을수 없는 사이트가 이곳이죠...


  • 2022-02-25 17:54

    @dra**** 님 그저 얻는 건 없지요

    절대 공감합니다.


  • 2024-07-27 06:20

    @dra**** 님 좋은 정보 감사드립니다.


  • 2021-05-30 16:46

    @dra**** 님 저도 찾다찾다 찾아낸곳이 여기였습니다,,,전공하나로는 안되고 결국엔 융합,,,,주로 사용하는 시뮬레이션을 좀 더 활용하려고 VBA를 접하게 됐습니다...


  • 2021-06-09 14:21

    @dra**** 님 네 저도 공감합니다.


  • 2021-06-24 18:48

    @dra**** 님 저는 지금 9-10번 사이에 있는것 같아요. DB관련된 공부를 하고자 OLEDB를 열심히 팠지만, 아직 회사 DB에서 SELECT만 하고 있네요~

    빨리 실력을 키워 멋진 것들을 만들고 싶습니다 😃

    Class를 실무에 어떻게 적용하는게 좋을지 고민중입니다. 혹시 팁이나 사용하시는 로직이 있으시면 공유해주실 수 있을까요? 👍

    좋은 글 감사드립니다!


    • 2021-06-24 19:11

      @승이 님 저는 주제별로 클래스를 만들어 두고 프로젝트 의뢰받을 때마다 필요한 로직만 선택적으로 집어 넣습니다.

      시트다루기 클래스, 파일 다루기 클래스, 쉐이프 다루기 클래스, 엑셀 DB, 엑세스 DB 클래스, 날짜관련 클래스, 사용자 정의폼 관련 클래스 ActiveX 컨트롤용 클래스, 카톡 클래스 등등. 많은 프로젝트를 하다 보니 범용으로 쓰이는부분과 특화든 부분이 나누어 지더군요. 그래서 범용으로 만들어 두고, 특화되는 부분만 추가합니다.

      가령 엑셀을 DB로 쓴다면, clsXlDataBase클래스를 만들어 두고 Connection, Insert, Update, Delete, Close 기본함수를 넣고, 그 회사에 맞는 로직을 추가하는 방법을 씁니다. clsXlDataBase클래스는 외부 파일로 저장해 두었다 필요하면 불러쓰기만 하면 되니까요.

      폼이 아닌 시트에서 자동화 하는 경우에는, 함수 실행후 자동으로 메모리에서 해제 되기 때문에, 세팅 관련해서 클래스를 많이 씁니다.

      프로젝트를 많이 하다 보면 온갖 상황에 직면하게 되기 때문에 경험이 쌓여서 그런 듯 합니다. 그리고 의뢰하시는 분들의 공통점은 클릭하나로 모든 것이 해결되기를 원하기 때문에 VBA 코딩시 세세한 부분까지 꽤차고 있어야 가능합니다.

      가령 어느 규모가 있는 식당의 사장님의 경우, 온라인으로 주문이 들어오면 클릭 한번으로 주방에 주문 전달, 빌지 자동 출력, 고객한테 카톡으로 피드백 자동 발송, 일매출, 월매출, 품목별 매출 이런것을 클릭으로 한번에 해결해 주시기를 원했습니다. 얼마나 많은 부분이 자동화로 이루어 져야 할 지 ... 이런 거 한번 할 때마다 다음을 위해서 클래스를 만들어 두고 수정하고 하다 보니 여기까지 왔네요.

      이번의 최대 난제가 엑셀 파일은 원드라이브에 두고, 파워쿼리로 자동화 하는 것인데, 파워쿼리 자동화를 해 본적이 없어 지금 이부분 관련 개체 학습과 "M"언어 학습중입니다. ㅠㅠ

      엑셀 DB같은 경우, Connection 개체, Recordset 개체, Command 개체, Parameter 개체 등등에 대한 지식이 어느 정도 있어야 자유 롭게 다룰 수 있습니다. 단편적으로 레코드 하나를 처리하는 것이 아니라 어쩌면 수만에서 수십만개의 데이터를 일괄 업데이드하거나, 추가해야할 일이 생길 수 있으니까요. 이 부분 포스팅을 잘 안하는 이유가 백그라운드 지식이 많지 않은 분들이 사용하게 되면, 감당 못할 질문이 들어오기 때문에 그렇습니다.

      쉬운 부분부터 공유를 한 번 해보도록 하겠습니다.


  • 2022-03-17 18:42

    @dra**** 님 좋은 정보 감사합니다.


  • 2021-07-27 15:47

    @dra**** 님 와...예술가같아요


전체 165
번호 제목 작성자 작성일 추천 조회
알림
[📚진짜쓰는 실무엑셀] IT/오피스 '1위' 베스트셀러! 엑셀 공부, 이 교재로 마스터하세요! (313)
오빠두엑셀 | 2022.02.03 | 추천 573 | 조회 601377
오빠두엑셀 2022.02.03 573 601377
78094
[M365] 수식으로 고급필터 구현하기 첨부파일 (1)
마법의손 | 2025.04.11 | 추천 1 | 조회 85
마법의손 2025.04.11 1 85
78009
LOOKUP을 XLOOKUP 처럼 사용 (2019 이하 필독) 첨부파일 (1)
박정호 | 2025.04.06 | 추천 0 | 조회 102
박정호 2025.04.06 - 102
78002
[VBA] 괄호가 대응되게 문자열 잘라주는 함수
마법의손 | 2025.04.05 | 추천 0 | 조회 50
마법의손 2025.04.05 - 50
77792
엑셀 그림 삽입이 안될 때.. (그림 삽입 비활성화 해결) (1)
더블유에이 | 2025.03.24 | 추천 2 | 조회 366
더블유에이 2025.03.24 2 366
77667
언피벗 툴 업그레이드 버전입니다. 첨부파일 (2)
박정호 | 2025.03.17 | 추천 0 | 조회 104
박정호 2025.03.17 - 104
77635
머리글로 데이터 합치기 툴 첨부파일 (4)
박정호 | 2025.03.15 | 추천 1 | 조회 114
박정호 2025.03.15 1 114
77598
MERGE(자석처럼 자료 붙이기) 툴입니다. 첨부파일 (2)
박정호 | 2025.03.13 | 추천 0 | 조회 152
박정호 2025.03.13 - 152
77577
[VBA] 시트명들 가져오는 함수 첨부파일 (4)
마법의손 | 2025.03.12 | 추천 1 | 조회 113
마법의손 2025.03.12 1 113
77544
LOOKUP 함수 사용법(2019 이하 필독) 첨부파일 (6)
박정호 | 2025.03.11 | 추천 0 | 조회 189
박정호 2025.03.11 - 189
77543
[함수TIP] Date함수로 Eomonth함수 대체하기 (3)
마법의손 | 2025.03.11 | 추천 3 | 조회 73
마법의손 2025.03.11 3 73
77481
쉽게 쓸 수 있는 언피벗 툴 첨부파일 (2)
박정호 | 2025.03.08 | 추천 2 | 조회 115
박정호 2025.03.08 2 115
77468
월간단위 월주차 함수 첨부파일 (3)
팍셀 | 2025.03.07 | 추천 0 | 조회 136
팍셀 2025.03.07 - 136
77385
TEXTJOIN 을 SUMPRODUCT 공식으로 2차원 데이터 다루기 첨부파일
박정호 | 2025.03.04 | 추천 0 | 조회 99
박정호 2025.03.04 - 99
77355
TEXTJOIN 으로 2차원 데이터 다루기 첨부파일 (3)
박정호 | 2025.03.02 | 추천 1 | 조회 101
박정호 2025.03.02 1 101
77353
& 기호로 SUMPRODUCT 2차원 데이터 다루기 첨부파일 (2)
박정호 | 2025.03.02 | 추천 0 | 조회 81
박정호 2025.03.02 - 81
77351
단어 포함 여부 검색, 원하는 단어로 출력 첨부파일
박정호 | 2025.03.02 | 추천 1 | 조회 108
박정호 2025.03.02 1 108
77238
휴일이면 1 아니면 0이 나오는 함수 첨부파일 (4)
박정호 | 2025.02.24 | 추천 0 | 조회 145
박정호 2025.02.24 - 145
77072
SUMPRODUCT로 VLOOKUP 대체 (2차원 룩업 가능) 첨부파일 (1)
박정호 | 2025.02.16 | 추천 0 | 조회 256
박정호 2025.02.16 - 256
76915
SUMPRODUCT로 2차원 데이터 다루기[응용] 첨부파일 (6)
박정호 | 2025.02.09 | 추천 1 | 조회 228
박정호 2025.02.09 1 228
76913
SUMPRODUCT로 2차원 데이터 sumifs 처럼 다루기 첨부파일 (1)
박정호 | 2025.02.09 | 추천 0 | 조회 181
박정호 2025.02.09 - 181