CopyFromRecordset on luultavasti helpoin tapa saada tietoja Access -taulukosta Excel -laskentataulukkoon.
Sub DAOCopyFromRecordSet (DBFullName As String, TableName As String, _ FieldName As String, TargetRange As Range) 'Esimerkki: DAOCopyFromRecordSet "C: \ FolderName \ DataBaseName.mdb", _ "TableName", "FieldName", Range ("Cran Dim db tietokannana, rs tietueina Dim intColIndex kokonaislukuna Aseta 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) 'suodatintietueet' kirjoittavat kenttien nimet IntColIndex = 0 To rs.Fields.Count - 1 TargetRange.Offset ( 0, intColIndex) .Arvo = rs.Kentät (intColIndex) .Nimi Seuraava 'Kirjoita tietuejoukko TargetRange.Offset (1, 0).
Jos haluat hallita enemmän tietojen tuontia, voit mukauttaa makroa alla:
Sub DAOFromAccessToExcel (DBFullName As String, TableName As String, _ FieldName As String, TargetRange As Range) 'Esimerkki: DAOFromAccessToExcel "C: \ FolderName \ DataBaseName.mdb", _ "TableName", "FieldName", Range ("B" Dim db tietokannana, rs tietuejoukkona Dim lngRowIndex 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) suodatintietueet lngRowIndex = 0 rs Jos ei .BOF Sitten .MoveFirst Vaikka ei .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
Makroesimerkit olettaa, että VBA -projektisi on lisännyt viittauksen DAO -objektikirjastoon.
Voit tehdä tämän VBE: stä valitsemalla valikon Työkalut, viitteet ja valitsemalla Microsoft DAO x.xx Object Library.
Käytä ADO: ta, jos voit valita ADO: n tai DAO: n tietojen tuonnin tai viennin välillä.