Avatar billede florint Nybegynder
26. august 2004 - 09:00 Der er 4 kommentarer og
2 løsninger

Import af mange data fra database til Excell

Hej,
Hvis jeg skal importere data fra en database til excell, og det er rimeligt mange, så tager det en krig at hente og sætte ind.

Hvilken måde, via VBA er den allerhurtigste, og et eksempel vil være meget velkomment.
Jeg skal ikke vælge hvilke felter og kolonner jeg skal brug, jeg skal bare have dem alle.

På forhånd tak
Mvh
Avatar billede sjap Praktikant
26. august 2004 - 09:33 #1
Opret en forespørgsel i menuen Data/Hent eksterne data/Opret ny forespørgsel. Husk at gemme forespørgslen.
Derefter kan du selv indspille den VBA kode du skal bruge ved at vælge menuen Funktioner/Makro/Indspil ny makro og så vælge menuen Data/Hent eksterne data/Kør forespørgsel i database. Når du er færdig med at hente data stopper du indspilningen af makroen.
Makroen ligger nu som VBA kode og du kan redigere den efter behov (Funktioner/Makro/Rediger i Visual Basic).
Avatar billede bak Forsker
26. august 2004 - 10:44 #2
en anden og hurtig mulighed. Du skal bare sætte sti og databasenavn, samt tabelnavn og indsættelsested ind i GetData og så køre GetData.
Under tools/references skal du have flueben i Microsoft AcctiveX Dataobject 2.x Library

Option Explicit

Sub GetData()
' Exempel: ADOImportFromAccessTable "C:\FolderName\DataBaseName.mdb","TabelNavn", 1. celle for indsætning
ADOImportFromAccessTable "C:\db11.mdb", "kundekartotek", Sheets("Ark2").Range("A1")
End Sub


Sub ADOImportFromAccessTable(DBFullName As String, _
    TableName As String, TargetRange As Range)

Dim cn As ADODB.Connection, rs As ADODB.Recordset, intColIndex As Integer
    Set TargetRange = TargetRange.Cells(1, 1)
    ' open the database
    Set cn = New ADODB.Connection
    cn.Open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & _
        DBFullName & ";"
    Set rs = New ADODB.Recordset
    rs.Open TableName, cn, adOpenStatic, adLockOptimistic, adCmdTable
        For intColIndex = 0 To rs.Fields.Count - 1 ' the field names
            TargetRange.Offset(0, intColIndex).Value = rs.Fields(intColIndex).Name
        Next
        TargetRange.Offset(1, 0).CopyFromRecordset rs ' the recordset data

    rs.Close
    Set rs = Nothing
    cn.Close
    Set cn = Nothing
End Sub
Avatar billede bak Forsker
26. august 2004 - 10:55 #3
Har lige chekket og der er ikke den store gevinst ved at køre min makro.
Derfor er sjap's forslag det bedste, idet det også give dig muligheden for at refreshe bare ved at højreklikke i tabellen
Avatar billede florint Nybegynder
26. august 2004 - 19:51 #4
Takker for hjælpen - i deler da begge metoder er ganske brugbare. Læg venligst et svar så jeg kan dele :-)
mvh
Avatar billede sjap Praktikant
26. august 2004 - 20:40 #5
Gerne :0)
Avatar billede bak Forsker
27. august 2004 - 09:36 #6
også her :-)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Excel kurser for alle niveauer og behov – find det kursus, der passer til dig

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester