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

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

사용자 정의 폼에 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레벨
포인트 : 4348 EP
전체 15

  • 2023-03-02 10:45

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


  • 2022-10-12 17:55

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

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


    • 2022-10-12 18:02

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


  • 2023-03-28 16:34

    @dra**** 님 어렵네요...열공모드 들어갑니다.


  • 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**** 님 감사합니다!


  • 2023-01-11 19:33

    @dra**** 님 감사합니다 많이 배웠네요.


  • 2023-04-09 18:37

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

     


전체 74
번호 제목 작성자 작성일 추천 조회
알림
[📚교재 출간 안내] 「진짜쓰는 실무엑셀」 , 드디어 출간되었습니다! (179)
오빠두엑셀 | 2022.02.03 | 추천 469 | 조회 184796
오빠두엑셀 2022.02.03 469 184796
공지사항
[VBA] 구하라 그러면 주어질 것이다. - VBA 마스터 E-Book (영문판) 첨부파일 (13)
dra**** | 2022.07.19 | 추천 10 | 조회 772
dra**** 2022.07.19 10 772
45662
선택된 범위 정렬 단축키 (20)
Denise | 2022.12.15 | 추천 5 | 조회 523
Denise 2022.12.15 5 523
44293
[엑셀 VBA] 예약 DB - 9. 시트의 바우처&견적서 양식에 데이터 뿌리기 (15)
dra**** | 2022.11.11 | 추천 4 | 조회 888
dra**** 2022.11.11 4 888
Re:[엑셀 VBA] 예약 DB - 9. 시트의 바우처&견적서 양식에 데이터 뿌리기
blue_0313 | 2023.03.21 | 추천 0 | 조회 69
blue_0313 2023.03.21 0 69
44227
[엑셀 VBA] 예약 DB - 8. Listbox 와 폼 컨트롤 연동하고 DB로 보내기 (1)
dra**** | 2022.11.09 | 추천 3 | 조회 566
dra**** 2022.11.09 3 566
44219
[엑셀 VBA] 예약 DB - 7. MySQL 클래스와 사용법 (3)
dra**** | 2022.11.09 | 추천 2 | 조회 513
dra**** 2022.11.09 2 513
43438
[엑셀 VBA] 예약 DB - 6. 폼 콘트롤과 DB 필드명 일치시키기
dra**** | 2022.10.21 | 추천 2 | 조회 310
dra**** 2022.10.21 2 310
43292
[엑셀 VBA] 예약 DB - 5. makeSQL() 함수 - INSERT, UPDATE문 자동 생성 (7)
dra**** | 2022.10.18 | 추천 3 | 조회 533
dra**** 2022.10.18 3 533
43091
[엑셀 VBA] 예약 DB - 4. 표 가지고 놀기 (17)
dra**** | 2022.10.13 | 추천 1 | 조회 695
dra**** 2022.10.13 1 695
43017
[엑셀 VBA] 예약 DB -3. 표(테이블, ListObject)을 사용해야 하는 이유1 (15)
dra**** | 2022.10.11 | 추천 2 | 조회 580
dra**** 2022.10.11 2 580
42998
[잡설] 엑셀이 웹으로 가야하는 이유2 (11)
dra**** | 2022.10.10 | 추천 5 | 조회 826
dra**** 2022.10.10 5 826
Re:[잡설] 엑셀이 웹으로 가야하는 이유2
tin | 2023.01.12 | 추천 0 | 조회 161
tin 2023.01.12 0 161
42982
[엑셀 VBA] 예약 DB - 2. 다시 웹으로 - Access에서 MySQL로 데이터 이식
dra**** | 2022.10.10 | 추천 2 | 조회 395
dra**** 2022.10.10 2 395
40590
[엑셀 VBA] 예약 DB - 1. 엑세스, SQL, Recordset, ListObject 의 상관 관계 (9)
dra**** | 2022.07.29 | 추천 3 | 조회 673
dra**** 2022.07.29 3 673
Re:[엑셀 VBA] 예약 DB - 1. 엑세스, SQL, Recordset, ListObject 의 상관 관계
tin | 2023.01.12 | 추천 0 | 조회 107
tin 2023.01.12 0 107
40511
[잡설] 엑셀의 꽃 파워 쿼리를 버리다. (5)
dra**** | 2022.07.29 | 추천 5 | 조회 1152
dra**** 2022.07.29 5 1152
40321
[경험담..해결했습니다.] &H80004005(-2147467259)시스템오류 (4)
티엠프이 | 2022.07.25 | 추천 2 | 조회 732
티엠프이 2022.07.25 2 732
40074
M365 업데이트 이후 발생하는 H80004005 (-2147467259) 자동화 오류 해결방법
오빠두엑셀 | 2022.07.23 | 추천 1 | 조회 511
오빠두엑셀 2022.07.23 1 511
39608
엑셀 그래프에 관한 유튜브 채널정보 입니다. (16)
레몬네이드 | 2022.07.15 | 추천 0 | 조회 395
레몬네이드 2022.07.15 - 395
36473
[엑셀VBA] 시트 이름을 변수로 설정하고 싶을때 간단한 방법 (3)
알파고 | 2022.06.27 | 추천 2 | 조회 1705
알파고 2022.06.27 2 1705
35196
Print_Area 동적 인쇄 영역설정 첨부파일 (7)
sean | 2022.06.21 | 추천 4 | 조회 1800
sean 2022.06.21 4 1800
34607
셀레니움으로 개별공시지가 조회 첨부파일 (5)
나야 | 2022.06.02 | 추천 2 | 조회 451
나야 2022.06.02 2 451
26273
엑셀 2021, M365 가로스크롤 기능 (39)
더블유에이 | 2022.01.23 | 추천 17 | 조회 1294
더블유에이 2022.01.23 17 1294
Re:엑셀 2021, M365 가로스크롤 기능
김학동 | 2022.01.23 | 추천 1 | 조회 353
김학동 2022.01.23 1 353
Re:엑셀 2021, M365 가로스크롤 기능
김동희 | 2022.05.30 | 추천 0 | 조회 200
김동희 2022.05.30 0 200
24189
[엑셀 VBA] Snippet - OCR: 이미지 파일을 텍스트 파일로 변환하기 (28)
dra**** | 2021.12.01 | 추천 8 | 조회 3516
dra**** 2021.12.01 8 3516
Re:[엑셀 VBA] Snippet - OCR: 이미지 파일을 텍스트 파일로 변환하기
tin | 2023.01.12 | 추천 0 | 조회 90
tin 2023.01.12 0 90