Avatar billede rejen Nybegynder
14. marts 2008 - 14:52 Der er 7 kommentarer

Hent data fra Access til Excel

Jeg har et regneark i Excel, hvor jeg har brug for at hente data fra en Access database. Ud fra værdien i 3 celler i regnearket skal jeg finde værdien til den 4. celle. Hvordan gøres dette nemmest? Jeg havde i første omgang tænkt at det nok kunne gøres med en SQL forespørgsel, men er det muligt at bruge SQL i en celle i Excel?
Avatar billede supertekst Ekspert
14. marts 2008 - 23:08 #1
Ja - det kan godt lade sig gøre ved at tilføje en VBA-reference til databaseadgang fra Excel.
Avatar billede rejen Nybegynder
16. marts 2008 - 23:50 #2
ok, det frygtede jeg lidt. Er der nogen der kan vise mig hvordan?
Avatar billede supertekst Ekspert
16. marts 2008 - 23:58 #3
I Excel kan du godt udføre et SQL-kald til databasen - men for at gøre det nemmere - kunne du oplyse lidt mere vedr. de data, der findes i Excel som skal anvendes til at finde indholdet til den fjerde celle samt hvilke data, der skal findes - hvilken tabel & hvilket felt i DB.
Avatar billede rejen Nybegynder
17. marts 2008 - 11:54 #4
I excel arket er der 3 celler:
B3 - heltal
C3 - heltal
D3 - Brøk skrevet i tekst

Databasen:
Tabelnavn: fod_tommer
ID - autonummerering
fod - heltal - skal være lig B3
tommer - heltal - skal være lig C3
tomme_brok - tekst - skal være lig D3
indhold - heltal

E3 i Excel arket skal så bruge tallet fra databasens "indhold" og benytte det i beregninger i arket.
Avatar billede rejen Nybegynder
04. april 2008 - 00:31 #5
Skulle der mere info til?
Avatar billede supertekst Ekspert
04. april 2008 - 09:13 #6
Har p.t. ikke haft mulighed for at gøre mere ved det...
Avatar billede supertekst Ekspert
03. maj 2008 - 00:22 #7
Undskyld forsinkelsen:

Rem Referencen Microsoft DAO 3.6 tilføjet
Rem VBA-koden anbringes relevante ark (Højreklik - Vis programkode)
Rem Koden udføres når B3/C3/D3 er udfyldt og der klikkes i E3
rem Database & Excel-fil forventes at være i samme mappe
Rem ===============================================================
Const databaseNavn = "db.mdb"          'database-navnet - TILPASSES
Dim sti
Dim db
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim xf, xt, xtb As String
    If Target.Address = "$E$3" Then
        xf = Range("B3").Value
        xt = Range("C3").Value
        xtb = Range("D3").Value
        If xf <> "" And xt <> "" And xtb <> "" Then
            sti = findSti
            udførSql xf, xt, xtb
            lukDB
        End If
    End If
End Sub
Private Sub udførSql(xf, xt, xtb)
Dim qdfTemp As QueryDef, feltTB
Dim xrec As Recordset
   
    åbnDatabase
    Set qdfTemp = db.CreateQueryDef("")
   
    feltTB = Chr(39) + CStr(xtb) + Chr(39)
       
    SQLOutput "SELECT * FROM fod_tommer " & _
      "WHERE" & "(fod = " & xf & ")" & _
      " AND" & "(tommer = " & xt & ")" & _
      " AND" & "(tomme_brok = " & feltTB & ")" & _
      "ORDER BY " & "'" & ID & "'", qdfTemp ', xrec
End Sub
Function SQLOutput(strSQL As String, qdfTemp As QueryDef)
Dim xrec As Recordset, antalRec, aktuelleRække, akMd, mdKolonne, f
    qdfTemp.Sql = strSQL
    Set xrec = qdfTemp.OpenRecordset

    If xrec.RecordCount = 0 Then
        xrec.Close
        Cells(3, 5) = "??"
        Exit Function
    End If
   
    xrec.MoveLast
    antalRec = xrec.RecordCount
    xrec.MoveFirst
   
    If antalRec > 0 Then
        With xrec
            Cells(3, 5) = .Fields("indhold")
        End With
    End If
   
    xrec.Close
End Function
Private Function findSti()
    findSti = ActiveWorkbook.Path
    If Right(findSti, 1) <> "\" Then
        findSti = findSti + "\"
    End If
End Function
Private Sub åbnDatabase()
    Set db = OpenDatabase(sti + databaseNavn)
End Sub
Private Sub lukDB()
    db.Close
End Sub
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
Vi har et stort udvalg af Excel kurser. Find lige det kursus der passer dig lige her.

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