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 dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
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.