CopyFromRecordset е може би най -лесният метод за получаване на данни от таблица на Access в работен лист на Excel.
Sub DAOCopyFromRecordSet (DBFullName As String, TableName As String, _ FieldName As String, TargetRange As Range) 'Пример: DAOCopyFromRecordSet "C: \ FolderName \ DataBaseName.mdb", _ "TableName", "RanName (") Dim db като база данни, rs като набор от записи Dim intColIndex като цяло число Set TargetRange = TargetRange.Cells (1, 1) Set db = OpenDatabase (DBFullName) Set rs = db.OpenRecordset (TableName, dbOpenTable) 'всички записи' Set rs = db. OpenRecordset ("SELECT * FROM" & TableName & _ "WHERE" & FieldName & _ "= 'MyCriteria'", dbReadOnly) "записи на филтри" пишат имена на полета за intColIndex = 0 За rs.Fields.Count - 1 TargetRange.Offset ( 0, intColIndex.
Ако искате повече контрол с импортирането на данни, можете да персонализирате макроса по -долу:
Sub DAOFromAccessToExcel (DBFullName As String, TableName As String, _ FieldName As String, TargetRange As Range) 'Пример: DAOFromAccessToExcel "C: \ FolderName \ DataBaseName.mdb", _ "TableName", "FieldName () Dim db като база данни, rs като набор от записи Dim lngRowIndex като дълъг набор TargetRange = TargetRange.Cells (1, 1) Set db = OpenDatabase (DBFullName) Set rs = db.OpenRecordset (TableName, dbOpenTable) 'всички записи' Set rs = DB. OpenRecordset ("SELECT * FROM" & _ TableName & "WHERE" & FieldName & _ "= 'MyCriteria'", dbReadOnly) 'филтърни записи lngRowIndex = 0 С rs Ако не .BOF Тогава .MoveFirst While Not .EOF TargetRange.Offset ( lngRowIndex, 0) .Formula = .Fields (FieldName) .MoveNext lngRowIndex = lngRowIndex + 1 Wend End With Set rs = Нищо db. Затворете Set db = Nothing End Sub
Примерите за макрос предполагат, че вашият VBA проект е добавил препратка към библиотеката на DAO обекти.
Можете да направите това от VBE, като изберете менюто Инструменти, Препратки и изберете Microsoft DAO x.xx Object Library.
Използвайте ADO, ако можете да избирате между ADO и DAO за импортиране или експортиране на данни.