CopyFromRecordset은 Access 테이블의 데이터를 Excel 워크 시트로 가져 오는 가장 쉬운 방법 일 것입니다.

Sub DAOCopyFromRecordSet(DBFullName As String, TableName As String, _

FieldName As String, TargetRange As Range)

' Example: DAOCopyFromRecordSet "C:\FolderName\DataBaseName.mdb", _

"TableName", "FieldName", Range("C1")

Dim db As Database, rs As Recordset

Dim intColIndex As Integer

Set TargetRange = TargetRange.Cells(1, 1)

Set db = OpenDatabase(DBFullName)

Set rs = db.OpenRecordset(TableName, dbOpenTable) ' all records

'Set rs = db.OpenRecordset("SELECT * FROM " & TableName & _

" WHERE " & FieldName & _

" = 'MyCriteria'", dbReadOnly) ' filter records

' write field names

For intColIndex = 0 To rs.Fields.Count - 1

TargetRange.Offset(0, intColIndex).Value = rs.Fields(intColIndex).Name

Next

' write recordset

TargetRange.Offset(1, 0).CopyFromRecordset rs

Set rs = Nothing

db.Close

Set db = Nothing

End Sub

데이터 가져 오기로 더 많은 제어를 원하면 아래 매크로를 사용자 정의 할 수 있습니다.

Sub DAOFromAccessToExcel(DBFullName As String, TableName As String, _

FieldName As String, TargetRange As Range)

' Example: DAOFromAccessToExcel "C:\FolderName\DataBaseName.mdb", _

"TableName", "FieldName", Range("B1")

Dim db As Database, rs As Recordset

Dim lngRowIndex As Long

Set TargetRange = TargetRange.Cells(1, 1)

Set db = OpenDatabase(DBFullName)

Set rs = db.OpenRecordset(TableName, dbOpenTable) ' all records

'Set rs = DB.OpenRecordset("SELECT * FROM " & _

TableName & " WHERE " & FieldName & _

" = 'MyCriteria'", dbReadOnly) ' filter records

lngRowIndex = 0

With rs

If Not .BOF Then .MoveFirst

While Not .EOF

TargetRange.Offset(lngRowIndex, 0).Formula = .Fields(FieldName)

.MoveNext

lngRowIndex = lngRowIndex + 1

Wend

End With

Set rs = Nothing

db.Close

Set db = Nothing

End Sub

매크로 예제에서는 VBA 프로젝트가 DAO 개체 라이브러리에 대한 참조를 추가했다고 가정합니다.

도구, 참조 메뉴를 선택하고 Microsoft DAO x.xx 개체 라이브러리를 선택하여 VBE 내에서이 작업을 수행 할 수 있습니다.

데이터 가져 오기 또는 내보내기를 위해 ADO와 DAO 중에서 선택할 수있는 경우 ADO를 사용하십시오.