[엑셀 VBA] 예약 DB -3. 표(테이블, ListObject)을 사용해야 하는 이유1

작성자
dra****
작성일
2022-10-11 19:03
조회
148

사용자 정의 폼에 ListBox가 있습니다.
여기에 데이터를 집어 넣을 때 2가지 방법이 있습니다.
하나는 배열(Array)이고, 또 하나는 범위(Range)가 있습니다.

사용자가 서버에 데이터를 요청하면, 그 데이터가 Json형태로 날라 옵니다.
표를 사용하면 엑셀이 알아서 표로 쉽게 붙여 줍니다.
그렇지 않으면 일일이 Loop를 돌면서 일일히 구현해 주어야 합니다.

또한, 표를 사용하면, ListBox안의 RowSoure="표 이름(사실은 Range로 지정됩니다)"만 지정해 주면, 알아서 표의 데이터가 ListBox에 자동으로 달라 붙습니다.

RowSource에 표이름을 넣으면, 시트상의 표의 레코드가 수정되면 자동으로 같이 연동되어 바뀝니다.

다만 표의 행(Row or Record)를 추가하거나 삭제하면 문제가 생깁니다.
그래서 삭제나 추가시에는 RowSource=""로 초기화 했다가 RowSource="표 이름" 이렇게 해주어야 합니다. 이는 표의 범위가 바뀌었기 때문입니다.

빨간색 테두리가 리스트박스입니다.

리스박스의 속성입니다. 여기데 표의 이름을 집어 넣으면, 아래 시트와 자동으로 연동이 됩니다.

그럼 시트에서 수정을 해도 되고, 사용자 정의 폼에서 수정해도 됩니다.

시트에 CRUD를 구현해 놓으면, 시트에서도 바로 서버로 전송할 수 있습니다.

지인이 사용자 정의폼에서 서버로 전송하게 하기를 원해서 그렇게 해 드렸습니다.

리스트 박스에서 사용자를 클릭하면, 해당 데이터를 폼에 뿌려 줍니다.

아니면 New를 클릭해서 폼 컨트롤의 데이터를 초기화 하고 Update를 누르면,

INSERT or UPDATE 기능을 수행하게 합니다.

위의 폼을 자세히 보시면, 언급은 안했지만, 멤버, 관리자, 골프장 관련된 정보를 입력/수정/삭제 하도록 하는 사용자 정의폼을 불러 오게 하는 버튼들이 있습니다.

그리고, 조회할 때, 조건을 입력 또는 선택하게 하는 텍스트 상자 들이 있습니다.

이 부분이 WHERE 구문을 생성하게 하는 부분입니다.

다음에는 표의 데이터들을 SQL로 변환해서 MySQL로 이식하는 코드를 올리도록 하겠습니다.

스크랩
공유
회원등급 : 29레벨
포인트 : 4251 EP
전체 11

  • 2022-10-12 17:55

    @dra**** 님 오우~~!!😱 만드신 폼 디자인에서 느껴지는 전문성이 대단하십니다!

    VBA도 .Net처럼 서식컨트롤 디자인을 업데이트해주면 참 좋을텐데..ㅜㅜ 그렇지 못해서 너무 아쉽습니다


    • 2022-10-12 18:02

      @오빠두엑셀 님 디자인 측면에서는 정말 너무나도 아쉽습니다.


  • 2022-10-21 11:28

    @dra**** 님 우와 저도 이렇게 웹이랑 연동해서 엑셀을 사용하고 싶은데 코딩은 html css과 약간의 js 밖에 할줄 몰라서...ㅠㅠ언젠가 쿼리도 배워서 글쓴분처럼 하고 싶어요.


    • 2022-10-21 11:34

      @엘모 님 엑셀에서 사용할 때는 웹과 연동이 필요없고, 웹 호스팅 업체에서 database 서버를 열어 줍니다. 보통은 MySQL 서버이고, 호스팅 업체에 로그인하고 들어가면 접속해야 할 주소, 아이디, 비밀번호를 줍니다. 그것을 가지고 엑셀 VBA Connection String에 정보를 주고 연동하는 것입니다.

      웹 페이지는 브라우저상에서 작동하도록 하려 하는 것이기 때문에, HTML, CSS, JS, PHP, NodeJS 등등의 학습이 필요한 것이고요.


      • 2022-10-21 11:46

        @dra**** 님 우왓 답글 감사합니다 혹시 이렇게 데이터를 서버에 두고 엑셀로 가져와서 쓰면 한 엑셀 시트에 여러 데이터를 원하는대로 가져와서 쓸 수 있나요? 예전에 구글시트로도 해봤었는데 구글시트는 데이터양이 좀만 많아져도 느려져서 못쓰겠더라구요...


        • 2022-10-21 11:48

          @엘모 님 마음데로 쓸 수 있습니다. 용량도 거의 제한이 없습니다.

          DB는 대부분 문자열로 구성되어 있기 때문에, 10만개를 불러와도 거의 1초 이내에 엑셀에 전달 됩니다. 다만 엑셀의 처리 속도가 느리면 화면에 보여주는데 약간 시간이(1초~3초 정도) 걸립니다.

           


          • 2022-10-21 12:04

            @dra**** 님 제가 엑셀vba는 아직 초보단계인데요, 작성자님처럼 db랑 연동되는 엑셀 작업을 하려면 sql이랑 엑셀 vba만 배우면 될까요??ㅠ


            • 2022-10-21 12:18

              @엘모 님 VBA, 표를 VBA로 핸들링하기, SQL, Recordset Object (서버에서 넘어오는 데이터를 시트에 뿌려주는 핵심 역할) 이정도면 충분합니다.

              Connection String(서버에 연결하는 방법을 기술) 사용하는 방법은 웹에 널려 있습니다. 특히 따라 공부할 필요 없이 복/붙하시면 됩니다.

               

              개인 컴퓨터에 MySQL설치하고 여기서 테스트 해보시고, 나중에 웹으로 갈 때, 데이터 이식하면 됩니다.


              • 2022-10-21 12:26

                @dra**** 님 감사합니다~!! 여기서 vba부터 배우고 차근차근 해봐야겠어요


                • 2022-10-21 12:29

                  @엘모 님 유튜브에서 wise owl 검색해서 강의 완강 해보셔요. 제 VBA 기초는 거기서 나왔습니다. 영국친구인데, 체계적으로 꽤 잘 가르칩니다.


                  • 2022-10-21 12:51

                    @dra**** 님 감사합니다!


전체 69
번호 제목 작성자 작성일 추천 조회
알림
「🎉 올해의 책 투표」 '진짜쓰는 실무엑셀' 이 후보에 선정되었습니다! (👉깜짝 이벤트) (51)
오빠두엑셀 | 2022.11.07 | 추천 23 | 조회 7954
오빠두엑셀 2022.11.07 23 7954
공지사항
[VBA] 구하라 그러면 주어질 것이다. - VBA 마스터 E-Book (영문판) 첨부파일 (6)
dra**** | 2022.07.19 | 추천 4 | 조회 355
dra**** 2022.07.19 4 355
44293
[엑셀 VBA] 예약 DB - 9. 시트의 바우처&견적서 양식에 데이터 뿌리기 (3)
dra**** | 2022.11.11 | 추천 1 | 조회 136
dra**** 2022.11.11 1 136
44227
[엑셀 VBA] 예약 DB - 8. Listbox 와 폼 컨트롤 연동하고 DB로 보내기
dra**** | 2022.11.09 | 추천 2 | 조회 63
dra**** 2022.11.09 2 63
44219
[엑셀 VBA] 예약 DB - 7. MySQL 클래스와 사용법 (2)
dra**** | 2022.11.09 | 추천 2 | 조회 57
dra**** 2022.11.09 2 57
43438
[엑셀 VBA] 예약 DB - 6. 폼 콘트롤과 DB 필드명 일치시키기
dra**** | 2022.10.21 | 추천 2 | 조회 95
dra**** 2022.10.21 2 95
43292
[엑셀 VBA] 예약 DB - 5. makeSQL() 함수 - INSERT, UPDATE문 자동 생성 (4)
dra**** | 2022.10.18 | 추천 3 | 조회 109
dra**** 2022.10.18 3 109
43091
[엑셀 VBA] 예약 DB - 4. 표 가지고 놀기 (6)
dra**** | 2022.10.13 | 추천 1 | 조회 190
dra**** 2022.10.13 1 190
43017
[엑셀 VBA] 예약 DB -3. 표(테이블, ListObject)을 사용해야 하는 이유1 (11)
dra**** | 2022.10.11 | 추천 1 | 조회 148
dra**** 2022.10.11 1 148
42998
[잡설] 엑셀이 웹으로 가야하는 이유2 (9)
dra**** | 2022.10.10 | 추천 5 | 조회 259
dra**** 2022.10.10 5 259
42982
[엑셀 VBA] 예약 DB - 2. 다시 웹으로 - Access에서 MySQL로 데이터 이식
dra**** | 2022.10.10 | 추천 2 | 조회 121
dra**** 2022.10.10 2 121
40590
[엑셀 VBA] 예약 DB - 1. 엑세스, SQL, Recordset, ListObject 의 상관 관계 (4)
dra**** | 2022.07.29 | 추천 3 | 조회 339
dra**** 2022.07.29 3 339
40511
[잡설] 엑셀의 꽃 파워 쿼리를 버리다. (3)
dra**** | 2022.07.29 | 추천 4 | 조회 552
dra**** 2022.07.29 4 552
40321
[경험담..해결했습니다.] &H80004005(-2147467259)시스템오류 (3)
티엠프이 | 2022.07.25 | 추천 2 | 조회 279
티엠프이 2022.07.25 2 279
40074
M365 업데이트 이후 발생하는 H80004005 (-2147467259) 자동화 오류 해결방법
오빠두엑셀 | 2022.07.23 | 추천 0 | 조회 277
오빠두엑셀 2022.07.23 - 277
39608
엑셀 그래프에 관한 유튜브 채널정보 입니다. (7)
레몬네이드 | 2022.07.15 | 추천 -1 | 조회 212
레몬네이드 2022.07.15 -1 212
36473
[엑셀VBA] 시트 이름을 변수로 설정하고 싶을때 간단한 방법 (2)
알파고 | 2022.06.27 | 추천 2 | 조회 432
알파고 2022.06.27 2 432
35196
Print_Area 동적 인쇄 영역설정 첨부파일 (1)
sean | 2022.06.21 | 추천 4 | 조회 456
sean 2022.06.21 4 456
34607
셀레니움으로 개별공시지가 조회 첨부파일 (3)
나야 | 2022.06.02 | 추천 1 | 조회 291
나야 2022.06.02 1 291
26273
엑셀 2021, M365 가로스크롤 기능 (28)
더블유에이 | 2022.01.23 | 추천 17 | 조회 843
더블유에이 2022.01.23 17 843
Re:엑셀 2021, M365 가로스크롤 기능
김학동 | 2022.01.23 | 추천 1 | 조회 275
김학동 2022.01.23 1 275
Re:엑셀 2021, M365 가로스크롤 기능
김동희 | 2022.05.30 | 추천 0 | 조회 128
김동희 2022.05.30 0 128
24189
[엑셀 VBA] Snippet - OCR: 이미지 파일을 텍스트 파일로 변환하기 (25)
dra**** | 2021.12.01 | 추천 8 | 조회 2083
dra**** 2021.12.01 8 2083
23999
[엑셀 VBA] Snippet - Public IP, Local IP, Mac Address 구하기 (6)
dra**** | 2021.11.25 | 추천 2 | 조회 760
dra**** 2021.11.25 2 760