반응형
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을 걸러서 출력하면 자신이 만든 테이블만 출력이 가능합니다.
반응형
'프로젝트 및 실습 > VBA' 카테고리의 다른 글
[VBA] 배열(Array) 사용하기 (0) | 2022.08.02 |
---|---|
[VBA] Comment Object 삽입 (0) | 2022.08.01 |
[VBA] Access DB 연결 및 Select 실행 (0) | 2022.07.14 |
[VBA] Worksheet_change 이벤트 (Sheet 내 값 수정 감지) (0) | 2022.07.08 |
[VBA] Protected, Lock을 이용해 시트 잠그기 (0) | 2022.06.14 |