프로젝트 및 실습/VBA

[VBA] Access DB 내 모든 테이블 List 출력

jooona 2022. 7. 14. 20:23
반응형

VBA를 이용해 개발을 하다보면 Access DB 내에 있는 모든 테이블의 이름을 List로 출력해주어야 할 일이 종종 있습니다.

 

우선 다음과 같이 테이블을 몇 개 만들어 줍니다.

 

  

저는 table1, table2, table3라는 3개의 테이블을 만들어주었습니다.

 

그리고 module에 아래의 코드를 삽입하고 실행해줍니다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
Sub Show_Table_List()
 
    Dim dbCon As ADODB.Connection '데이터베이스와의 연결을 담당하는 객체
    Dim dbRs As New ADODB.Recordset '데이터 탐색 및 조작을 담당하는 객체
 
    Set dbCon = New ADODB.Connection 'Connection 생성
    Set dbRs = New ADODB.Recordset 'RecordSet 생성
    
    dbCon.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\db.accdb;" 'db 연결 (Source= 뒤에는 accdb가 저장된 경로)
    dbCon.Open
    
    Set dbRs = dbCon.OpenSchema(adSchemaTables) 'dbRs에 데이터베이스 테이블 정보 open
    
    Dim cnt As Long
    cnt = 1
    With dbRs
        Do While Not .EOF '마지막 테이블까지 탐색
            
            Sheet5.Cells(cnt, 1= .Fields("TABLE_NAME"'테이블 이름 출력할 곳 지정
            cnt = cnt + 1
             
            .MoveNext
        Loop
    End With
    
    dbRs.Close
    dbCon.Close
     
End Sub
cs

 

저는 Sheet5라는 sheet에 table 명들을 모두 출력해주었습니다. 상황에 따라 ListView나 ListBox 등에 출력을 하면 되겠죠?

 

 

위의 코드를 실행하면 위의 캡쳐와 같이 테이블 명들이 모두 출력이 됩니다. 제일 밑에 보면 제가 만든 table1부터 table3까지 출력된 것을 확인할 수 있습니다.

 

그 위에 있는 테이블들은 Access System을 위한 Table이니 While문 안에서 MS로 시작하는 table을 걸러서 출력하면 자신이 만든 테이블만 출력이 가능합니다.

반응형