Avatar billede bellisimo Nybegynder
24. august 2003 - 17:20 Der er 8 kommentarer og
1 løsning

Køre SQL-forespørgsel ved tryk på knap i Excel

Hej

Jeg har en lille database (Access), hvorfra jeg gerne vil hente nogle data ind i Excel når jeg trykker på en knap.

Meeeeeen, hvordan gør jeg det? Jeg har kigget på: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vbaac10/html/acmthrun.asp men får det ikke lige til at fungere.

Forespørgslen i SQL skal fremgå i Visual Basic Editor'en.

Lad os sige databasen ser sådan ud:

Navn    Bil    Årgang    Pris
--------------------------------
Anders  VW      1997      100.000
Bjørn    BMW    1998      120.000
Camilla  FORD    1999      140.000
Avatar billede terry Ekspert
24. august 2003 - 17:26 #1
Do you want to export dato FROM Access into Excel or do you want to IMPORT dato into Excel from Access?
Avatar billede kabbak Professor
24. august 2003 - 17:30 #2
et eksempel

Sub Makro1()
'
    Range("A1").Select
    With ActiveSheet.QueryTables.Add(Connection:=Array(Array( _
        "ODBC;DSN=MS Access-database;DBQ=E:\Documents and Settings\Holger Bak\Dokumenter\Access\db7.mdb;DefaultDir=E:\Documents and Settings\" _
        ), Array( _
        "Holger Bak\Dokumenter\Access;DriverId=25;FIL=MS Access;MaxBufferSize=2048;PageTimeout=5;" _
        )), Destination:=Range("A1"))
        .CommandText = Array( _
        "SELECT Bestilling.indrykningsdato_øst, Bestilling.annonce_nr, Bestilling.bestilling" & Chr(13) & "" & Chr(10) & "FROM `E:\Documents and Settings\Holger Bak\Dokumenter\Access\db7`.Bestilling Bestilling" & Chr(13) & "" & Chr(10) & "ORDER BY Bestilling.annonc" _
        , "e_nr")
        .Name = "Forespørgsel fra MS Access-database"
        .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
Avatar billede kabbak Professor
24. august 2003 - 17:42 #3
her er der en med din tabel.

Sub HentBildata()
    With ActiveSheet.QueryTables.Add(Connection:=Array(Array( _
        "ODBC;DSN=MS Access-database;DBQ=E:\Documents and Settings\Holger Bak\Dokumenter\Excel\Biler.mdb;DefaultDir=E:\Documents and Settings" _
        ), Array( _
        "\Holger Bak\Dokumenter\Excel;DriverId=25;FIL=MS Access;MaxBufferSize=2048;PageTimeout=5;" _
        )), Destination:=Range("A1"))
        .CommandText = Array( _
        "SELECT Biler.Navn, Biler.Bil, Biler.Årgang, Biler.Pris" & Chr(13) & "" & Chr(10) & "FROM `E:\Documents and Settings\Holger Bak\Dokumenter\Excel\Biler`.Biler Biler" & Chr(13) & "" & Chr(10) & "ORDER BY Biler.Årgang" _
        )
        .Name = "Forespørgsel fra MS Access-database"
        .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
Avatar billede bellisimo Nybegynder
24. august 2003 - 21:16 #4
kabbak - det kører! Tak for hjælpen. Kan du ikke lige smide et svar, så du får nogle point?!??
Avatar billede kabbak Professor
24. august 2003 - 21:17 #5
det var da godt ;-))
Avatar billede bellisimo Nybegynder
24. august 2003 - 21:20 #6
Iøvrigt kunne jeg da godt tænke mig at vide, om jeg kan klare mig med endnu færre linier kode...
Avatar billede bellisimo Nybegynder
24. august 2003 - 21:20 #7
Værsgo'  :-)
Avatar billede kabbak Professor
24. august 2003 - 21:29 #8
Sub HentBildata()
    With ActiveSheet.QueryTables.Add(Connection:=Array(Array( _
        "ODBC;DSN=MS Access-database;DBQ=E:\Documents and Settings\Holger Bak\Dokumenter\Excel\Biler.mdb;DefaultDir=E:\Documents and Settings" _
        ), Array( _
        "\Holger Bak\Dokumenter\Excel;DriverId=25;FIL=MS Access;MaxBufferSize=2048;PageTimeout=5;" _
        )), Destination:=Range("A1"))
        .CommandText = Array( _
        "SELECT Biler.Navn, Biler.Bil, Biler.Årgang, Biler.Pris" & Chr(13) & "" & Chr(10) & "FROM `E:\Documents and Settings\Holger Bak\Dokumenter\Excel\Biler`.Biler Biler" & Chr(13) & "" & Chr(10) & "ORDER BY Biler.Årgang" _
        )
        .Refresh BackgroundQuery:=False
    End With
End Sub

dette er nok
Avatar billede bellisimo Nybegynder
24. august 2003 - 22:55 #9
Du er jo benhård til det der, kabbak  ;-)

Takker og bukker...
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
Kurser inden for grundlæggende programmering

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