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?
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.
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.
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
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
Synes godt om
Ny brugerNybegynder
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.