[잡설3] 엑셀에서 VB.net으로 넘어간 이유

작성자
dra****
작성일
2023-12-27 15:01
조회
1241

제 사업체 자동화를 하려다 맘 잡고 엑셀 공부한지 벌써 4년이 되었네요.

엑셀이 너무나도 훌륭한 도구이지만,

얼마 전 은행 전산실에서 근무하는 작은 형의 한 마디...

"엑셀 오류가 너무 많이 일일히 다 체크해야 한다고...".

반신반의 했는데, 소수점 이하는 데이터에 정말 오류가 많습니다. ㅋ

I. 초보 단계에서 엑셀을 하면서 깨달은 점

  1. 데이터는 워크시트에 있으면 안된다. 백업 안받고 실수로 시트 날리면 .... ㅎㅎㅎ
  2. 원하는 데로 가공 하려면 그때마다 노가다를 해야 한다.
  3. 필요함수 사용법을 제대로 익혀야한다. 많이 알면 알수록 도움이 많이 됨
  4. 복/붙을 잘해야 한다.
  5. 데이터에 일관성 주기가 힘 들다. ㅋ

II. VBA룰 통한 자동화 단계에서 깨달은 점

1. DB에 저장해 놓고 원하는데로 가공해서 불러오기. 너무 좋음

2. 양식 설정해 놓고, 해당 자료 무한 출력 가능. PDF이든, 스크린 샷이든.

3. 코딩상으로 수백명 고객한테 카톡으로 바로 보낼 수도 있어서 활용도가 높음

(이건 오빠두님의 카톡 강좌 참고)

4. 엑세스를 사용하다 웹의 MySQL로 넘어가니 어디서나 접근 가능함

MySQL에는 True/False 값이 없어서 1/0 으로 세팅해서 변환해야 하는 번거로움이 좀 있음

5. 여러 개의 VBA 폼을 띄워 놓고 사용하면 엑셀 자체가 다운되는 현상이 자주 발행함

6. 2006년 이후러 VBA 업데이트가 없어서 디자인이 많이 구림. 그리고 폼 디자인이 노가다임

7. 대용량 DB 핸들링시 속도가 많이 느리고, 메모리를 많이 잡아 먹음

8. 파워쿼리로 데이터베이스 CRUD 구현은 거의 불가능

 

III. VB.net으로 넘어간 이유 및 깨달은 점

1. 엑셀 데이터의 신뢰성에 의구심이 생김. 소수점 이하에서 실제 많이 발생함.

이건 실수를 저장하는 컴퓨터의 구조상의 결함 임. 64비트 변수를 쓰면 그나마 오차를 좀 줄임

가령 "$64.12" 라는 실수가 있으면, 곱하기 100을 해서 정수로 사용하는 프래그래머들이 많음

2. VBA를 많이 쓰면 작업 중에 엑셀이 다운되는 현상이 많이 생김. 엑셀 APPLICATION의 구조적 문제

그냥 MACRO 답게 써야 하는데, 이걸 전문 DB 프로그램 처럼 사용하려니.... ㅠㅠ

이 부분이 가장 큰 이유

3. 학창 시절 Delphi (파스칼언어)로 독학을 했던 세대라 객체지향 프로그램에 익숙해져 있음.

(다만, 군대 제대후 세상은 어느새 "C"언어로 바뀌어 있어서, 적응이 잘 안됨. 적성에도 안 맞음 ㅠㅠ)

4. 컴파일 언어라 인터프리터 방식의 VBA와는 비교도 안되게 빠름

5. 에러만 잡아 놓으면, 프로그램이 안정적으로 잘 돌아감.

6. 엑셀 제어가 VBA하고 똑같음

7. 콤보박스와 리스트박스에 칼럼이 1개 밖에 없음. 이거 무지하게 불편함.

(컨트를 만들까 하다 귀차니즘으로 포기)

8. 변수 선언 부분이 매우 까다로움. 결과적으로 득이 더 많음

9. 클래스의 달인이 됨, 컬렉션, 리스트 등등 배열관련 지식이 급 성장함

10. 생각보다 유튜브 강좌가 적어서, 고생을 좀 많이 했음.

(인도 애들 유튜브 그나마 좀 있음. 영어 발음이 인도화 됨. ex) database -> "다따 베이스" ㅋㅋ)

 

IV. 결론

1. 규모가 있는 회사라면, 그에 걸맞는 DB 프로그램이 있는 것이 맞다고 봄

시간/비용(인건비) 측면에서 많이 세이브 됨.

2. 소규모 개인 사업자들은 그냥 엑셀 쓰면 됨

3. 프로그램이 업이 아닌 분들이 시도 하지 마세요. 정신 건강에 해롭습니다.

이거는 웹 개발하고는 완전히 다른 별개 입니다. 공부해야 할 내용이 너무 많습니다.

웹개발은 애교입니다.

4. 하도 ChatGPT 하길래 코딩용으로 시도 해 보았다가, 분노조절 장애 생겼습니다.

 

아래는 그 Visual Basic net framework로 개발 한 스크린 샷입니다.

디자인에 소질이 없으니, 구려도 그냥 보셔요.

 

 

 

 

 

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

  • 2024-01-10 16:09

    @dra**** 님 우와~~ 대단하십니다.


  • 2024-03-28 19:26

    @dra**** 님 벽이느껴지네~.~


  • 2024-04-07 07:17

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


  • 2024-07-18 14:58

    @dra**** 님 유용한 정보 감사합니다!


  • 2024-01-18 14:45

    @dra**** 님 좋은 정보 감사합니다. 저도 한번 배워봐야겠네요..


  • 2023-12-30 13:07

    @dra**** 님 귀한 시간속에서 나온 경험치, 전부를 공감할 수 있는 수준은 아니지만, '아..그렇구나..' 하면서도, ㅎㅎ 부럽기도 합니다.


    • 2024-01-03 21:05

      @Gisele 님 관심의 정도에 따른 발전의 단계인 것 같습니다. 좀 더 빠르고 안정적이고 편리한 자동화를 추구하려다 보니, 이리도 해보고, 저리고 해보고 ...

      파이썬이나 이런 것들은 남들이 만들어 놓은 좋은 라이브러리가 많고 가져다 쓰면 편한데, 나중에 문제 생겼을 때 대처 방법이 없거나, 커스터마이징하기 힘들고, 혼자 개발하는 날코딩을 좋아하다 보니 (성취감이 커서).


  • 2024-01-31 10:49

    @dra**** 님 멋있으십니다


  • 2024-02-29 16:17

    @dra**** 님 와 금손이십니다.


  • 2024-01-08 11:53

    @dra**** 님 옛~날 정보처리기능사 따면서 배워둔 VB로 어찌어찌 VBA를 회사에서 사용해 오고 있는데, VB.NET 은 진입하기에 어떤가요? 사실 잘 아는게 아니라서, 조금 조금씩 인터넷에서 코드 보면서 따라하는 수준인데... 말씀하신 단점들이 너무 와닿아서 공부를 해봐야 하나 싶더라구요 ㅠ 웹으로 하면 좋은데 회사에서 지원도 안해주다보니, 팀 공유용 네트워크 드라이브에 엑세스 DB파일 두고 VBA /엑셀 사용중입니다..ㅠㅠ


    • 2024-01-08 13:31

      @용군888 님 아직 젊고 현업에 계속 종사하실 계획이라면, 해보라 권하고 싶습니다.

      쉽지 않지만, 극복하면 나중에 커다란 자산이 됩니다. ^^


  • 2024-01-08 12:33

    @dra**** 님 감사합니다. 저도 한번 봐야겠어요!


  • 2024-02-01 13:23

    @dra**** 님 와 현재 어떤 산업과 직군에서 종사하시는지 궁금합니다!

    그리고 제가 회사 BI에서 받은 자료로 대시보드를 만들어 공유 중인데
    행이 60만행이 넘어 엑셀이 잘 안열립니다...ㅠㅠ 혹시 이런 경우 해결책이 있을까요?

    M365와 원드라이브, sharepoint를 사용하고 있습니다!


    • 2024-02-01 15:56

      @아홉열 님 저는 문과 출신이고, 프로그래밍은 취미로...

      지금은 은퇴해서 소일거리 삼아 지인들 자동화 해 드리고 있습니다.

      요즘은 의뢰가 더 많이 이것이 업이 되고 있는 상황 ㅠㅠ.

      =========

      레코드가 1천개 넘으면, 데이터베이스를 쓰시는 것이 좋습니다.

      몇 백개만 되도, 스크롤링하고 데이터 찾는 것이 짜증나기 시작합니다.

      DB로 필요한 정보만 가공해서 엑셀에 불러오는 것이 바람직합니다.

      가공한 정보만 업데이트하면 부하도 적게 걸리고요.

      엑셀은, 일단 시트에 로드하는데 시간이 많이 걸리고, 뭔가를 해보려 해도,

      60만행을 가지고 놀아야 하니, 시스템 부하가 많이 걸리고, 엑셀 프로그램이 죽는 경우도 많이 생깁니다.


      • 2024-02-02 21:51

        @dra**** 님 오늘 회사에서 엑셀 표를 csv 파일로 전환해서 sharepoint에 목록으로 등록해 보려했는데,

        60만행(99메가) data를 등록하려니 30분동안 5% 진행되더라구요.. ㅠㅠ 혹시 이부분에 대해서는 방법이 없을까요?

         


        • 2024-02-02 22:15

          @아홉열 님 Sharepoint가 많이 느립니다. 저도 비지니스 가입했다, 너무 느려서 캔슬했습니다.

          써보니, 기업 공유에는... 저는 글쎄요라고...!!!

          엑세스에서 Web의 MySQL로 10만행 정도 올리는데도 20분은 소요 됩니다.

          그리고 CSV는 데이터가 정확히 안들어 갈수도 있습니다.

          Json이나 SQL로 업로드 하심이 바람직합니다.


          • 2024-02-02 23:19

            @dra**** 님 일주일간 문제를 해결 못하고 있었는데, 굉장히 박학다식 하신 것 같아 조금 더 상세히 질문을 드립니다.

            현재 저의 상황은 아래와 같습니다.

            1. 회사 BI 시스템에서 DATA를 엑셀로 다운로드 받은 후에

            2. 만들어 놓은 엑셀 대시보드에 붙여넣어 함수를 통해 일부 DATA 값의 변화를 주고,

            3. 피벗테이블과 피벗차트를 새로 고침 한 뒤에

            4. 원드라이브에 업로드해 공유하고 있었습니다.

            그런데 문제는 매일 매일 하루전 실적을 추가시키다 보니,

            월말에는 엑셀 데이터가 60만행(100메가)까지 늘어나고, 엑셀이 열리는데 필요한 시간이 너무 길어 대시보드의 활용도가 떨어집니다.

            그래서 대시보드 파일을 쉽고 빠르게 열고 닫을 수 있으며, 실적을 빠르게 조회해볼 수 있게 개선해보고 싶습니다.

            (엑셀 활용도가 떨어지는 담당자 분들도 있기에 조작이 편해야 했습니다.)

            그래서 생각한 것이 sharepoint list로 DB를 만든 뒤에, 대시보드 파일의 피벗 테이블과 차트를 해당 DB와 연결하는 것이 었습니다.

            그런데 문제는 sharepoint list에 60만행의 데이터를 밀어넣는 것에서부터 막혀버렸습니다.

            매일 매일 data를 sharepoint list에 업데이트해야 하는데, 이를 어떻게 해결해야 할지 잘 모르겠습니다..

            저 역시 sharepoint와 access, power automate, power bi, power query 이런 것들을 처음 다뤄봐서 너무 어렵네요..ㅠㅠ

            최근엔 excel - access - sharepoint를 활용한 방법을 찾아 한번 시도해보려 합니다.

            https://netwoven.com/sharepoint-custom-development/ways-to-export-data-from-excel-to-a-sharepoint-list/

            혹시 dra****님께서 저의 상황에 대해 조언해 주실 점이 있으실까요?!?

            참고적으로 회사 db에 sql 로 접근하는 것은 권한이 없고..

            sharepoint나 원드라이브 외에 회사 data를 업로드 시키는 것은 회사 보안 규정상 안될 것 같습니다 ㅠㅠ

             


            • 2024-02-03 07:39

              @아홉열 님 개인적으로 sharepoint의 느린 속도와 업데이트 반응이 느려 공유작업이 하기에는 실망스러웠기에 제가 지금 사용을 안하고 있습니다. 3년전 일인데요. 지금은 속도가 어떻게 달라졌는지는 모르겠습니다. 개인적으로 저는 더이상 엑셀 시트에서 작업하는 형태의 코딩은 버렸습니다. 이제 엑셀 함수도 다 까먹었고(필요성을 느끼지 못하기에). 엑셀은 db에서 불러온 데이터 리포트용으로만 구현하고 있습니다. 데이터 입력, 가공 등등의 모든 것은 vb.net 폼으로 개발해서 합니다. (예전에는 엑셀 폼으로 했는데, 엑셀 프로그램 자체가 다운이 많이 되서.)

              제가 그 입장이라면, 회사내에 MySQL 서버를 두고 (XAMPP) 인트라넷과 같은 형태로 공유를 해 보겠습니다.

              회사내에서서 파일 공유가 가능하다면, 그냥 엑세스 DB를 공유해보는 것은 어떨까요?


              • 2024-02-05 15:56

                @dra**** 님 엑세스 DB 공유라면 인터넷이 아닌 사내 네트워크를 통한 파일 공유를 말씀하시는 건가요?


  • 2024-01-05 03:36

    @dra**** 님 닷넷(특히 vb닷넷)은 계륵과도 같은 존재인 것 같습니다. (클리앙에서 들었는지 기억은 안나지만.. 윈12부터는 depreciate 된다는 이야기도 있던 것 같습니다.)

    결론의 내용 중 참 와닿는 부분이, 요즘 프론트 단은 웹으로만 개발하는게 비용,효율성,확장성,속도 모든 면에서 앞서는 것 같다는 생각입니다.


    • 2024-01-08 13:29

      @더블유에이 님 한가지 좋은 점은 엑셀 VBA에서 구현 할 수 없는 수 많은 것들을 구현할 수 있습니다. ㅋ

      .net 8.0 레퍼렌스 보면, 기한은 명기 되어 있지 않지만, 안정직 지원이라 써있네요. ㅎ


  • 2024-01-31 15:42

    @dra**** 님 저도 많이 배워야겠네요


  • 2024-03-08 10:08

    @dra**** 님 와웅~~ 좋은자료 공유 감사합니다.


전체 125
번호 제목 작성자 작성일 추천 조회
알림
[📚진짜쓰는 실무엑셀] 2024년 엑셀 공부, 이 책 한권으로 마스터하세요! (290)
오빠두엑셀 | 2022.02.03 | 추천 554 | 조회 844374
오빠두엑셀 2022.02.03 554 844374
74491
New 이름관리 엑셀 업그레이드 버전 입니다. 첨부파일 (2)
박정호 | 2024.10.28 | 추천 0 | 조회 45
박정호 2024.10.28 - 45
74354
월드컵 랭킹 계산(ELO 점수 계산) 첨부파일 (4)
박정호 | 2024.10.22 | 추천 0 | 조회 54
박정호 2024.10.22 - 54
74269
엑셀2021이하에서 CHOOSECOLS, CHOOSEROWS 처럼 동작시키기 첨부파일 (13)
마법의손 | 2024.10.18 | 추천 2 | 조회 107
마법의손 2024.10.18 2 107
74204
이름관리 엑셀입니다.(모듈) 첨부파일 (6)
박정호 | 2024.10.15 | 추천 0 | 조회 136
박정호 2024.10.15 - 136
74028
로또번호2(반자동 기능 업데이트) 첨부파일 (4)
박정호 | 2024.10.05 | 추천 1 | 조회 130
박정호 2024.10.05 1 130
74012
매장 근태관리시트 공유 첨부파일 (3)
체리로그 | 2024.10.03 | 추천 1 | 조회 125
체리로그 2024.10.03 1 125
73964
[파워쿼리] 여러열 열분할하기 첨부파일 (4)
마법의손 | 2024.10.01 | 추천 1 | 조회 103
마법의손 2024.10.01 1 103
73915
M365 GroupBy, PivotBy 함수 공식 배포 (6)
원조백수 | 2024.09.27 | 추천 2 | 조회 138
원조백수 2024.09.27 2 138
73485
m365 신규함수(베타) : TRIMRANGE (7)
더블유에이 | 2024.09.04 | 추천 1 | 조회 209
더블유에이 2024.09.04 1 209
73454
고등학교 선택과목 편성 방법 (4)
toug**** | 2024.09.03 | 추천 0 | 조회 122
toug**** 2024.09.03 - 122
73241
로또 번호 엑셀입니다. 첨부파일 (9)
박정호 | 2024.08.24 | 추천 1 | 조회 278
박정호 2024.08.24 1 278
73096
그룹별 데이터 나누기 [가로정렬] 첨부파일 (7)
마법의손 | 2024.08.20 | 추천 2 | 조회 200
마법의손 2024.08.20 2 200
73093
ppt에 둥근 표 삽입하기 (4)
강민준🤗 | 2024.08.20 | 추천 1 | 조회 175
강민준🤗 2024.08.20 1 175
73029
XLOOKUP, XMATCH 함수에 새로운 Match_mode로 RegEx 추가 (2)
원조백수 | 2024.08.16 | 추천 3 | 조회 208
원조백수 2024.08.16 3 208
72413
아웃룩에 개빡쳐서 만든 ThunderBird로 수신자 별 대량 메일 발송 VBA 매크로 공유합니다.(업무자동화) 첨부파일 (4)
알파고 | 2024.07.22 | 추천 1 | 조회 495
알파고 2024.07.22 1 495
72045
조합짜주는 엑셀(20명까지) 출력은 1만항까지 첨부파일 (13)
박정호 | 2024.07.10 | 추천 1 | 조회 367
박정호 2024.07.10 1 367
71965
서양달력 업데이트 입니다. 첨부파일 (14)
박정호 | 2024.07.07 | 추천 0 | 조회 223
박정호 2024.07.07 - 223
71902
Excel에서 ImportRange, ImportHTML 함수 사용하기 (4)
원조백수 | 2024.07.05 | 추천 0 | 조회 167
원조백수 2024.07.05 - 167
71838
Microsoft 365 신규 번역 함수 (8)
원조백수 | 2024.07.02 | 추천 2 | 조회 385
원조백수 2024.07.02 2 385
71804
음력->양력->서양달력 변환 첨부파일 (2)
박정호 | 2024.07.01 | 추천 0 | 조회 230
박정호 2024.07.01 - 230