태터데스크 관리자

도움말
닫기
적용하기   첫페이지 만들기

태터데스크 메시지

저장하였습니다.

티스토리 툴바


웹문서 도움말
검색
 

[엑셀 VBA] 엑셀에서 엑세스 데이터베이스 자료 수정하기
엑셀에서 MDB 데이터베이스의 내용을 불러오는 것은 ->기능을 이용하면 된다. 하지만, MDB 데이터베이스 속의 자료를 수정하는 것은 Access를 이용할 수 밖에 없다.
여기서는, Access를 이용하지 않고 .MDB에 있는 자료를 수정할수 있는 VBA 코드를 작성하여 Acceess가 설치되지 않은 곳에서 엑셀로 데이터베이스를 접근하는 방법을 제공한다.

1. 선행환경
- MS-Office 설치시 Microsoft Query도 함께 설치되어 있으면 좋다.
- 엑셀 추가기능중에서 'Access 연결' 기능이 설치되어 있으면 좋다.

2. VBA 코드로 .MDB 데이터를 시트로 불러오는 루틴
여기서 사용한 .MDB는 회원정보를 저장한 '회원DB.MDB'를 예로 들었다.
데이터베이스의 경로와 파일명은 임의로 수정해서 사용할 수 있다.

Sub GetData()
Dim szDBPath As String
Dim szConnString As String
Dim szQuery As String


szDBPath = "C:회원DB.mdb"
szConnString = "ODBC;DSN=MS Access Database;"
szConnString = szConnString & "DBQ=" & szDBPath
szConnString = szConnString & ";DefaultDir=C:"
szConnString = szConnString & ";DriverId=281;FIL=MS Access;MaxBufferSize=2048;PageTimeout=5;"

szQuery = "SELECT 회원테이블.회원ID, 회원테이블.회원성명, 회원테이블.주민등록번호 FROM 회원테이블 ORDER BY 회원테이블.회원ID"

ActiveWorkbook.Worksheets.Add
With ActiveSheet.QueryTables.Add(Connection:=Array(szConnString), Destination:=Range("A1"))
.CommandText = Array(szQuery)
.Name = "MS Access Database_Query"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = True
.RefreshStyle = xlInsertDeleteCells
.SavePassword = True
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.PreserveColumnInfo = True
.Refresh BackgroundQuery:=False
End With
End Sub

3. VBA 코드로 .MDB 속의 필드 자료를 수정하는 루틴

Sub UpdateData()
Dim szDBPath As String
Dim szConnString As String
Dim szQuery As String


szDBPath = "C:회원DB.mdb"
szConnString = "ODBC;DSN=MS Access Database;"
szConnString = szConnString & "DBQ=" & szDBPath
szConnString = szConnString & ";DefaultDir=C:"
szConnString = szConnString & ";DriverId=281;FIL=MS Access;MaxBufferSize=2048;PageTimeout=5;"

szQuery = "UPDATE 회원테이블 SET 회원테이블.회원성명 = '이길동' WHERE 회원테이블.회원성명='홍길동'"

With ActiveSheet.QueryTables.Add(Connection:=Array(szConnString), Destination:=Range("A1"))
.CommandText = Array(szQuery)
.Name = "MS Access Database_Query"
.BackgroundQuery = True
.RefreshStyle = xlInsertDeleteCells
.SaveData = True
.RefreshPeriod = 0
.Refresh BackgroundQuery:=True
End With
End Sub
[엑셀 VBA] 엑셀에서 엑세스 데이터베이스 자료 수정하기
Posted by 왁자지껄