14. juli 2000 - 20:40Der er
10 kommentarer og 1 løsning
Excel og Access
I Access har jeg en database med en forespørgsel fra denne forespørgsel ønsker jeg at hente et navn ind i en celle i Ecxel hvor det tilsvarende kundenummer er lig et nummer som jeg har skrevet i en celle i Excel uden at det er nødvendigt at opdatere, dette ved jeg skal kunne gøres i sql samt VB blot ved jeg ikke hvordan. Er der nogen der kan hjælpe ??? Hansen
Man kan godt kalde en access query fra excel, men det er enklere at spørge direkte i tabellen:
Placer følgende i et modul ( med de korrekte constant parametre):
Function HentKunde(nr As Integer, Feltnavn As String) As String 'sti til databasen: Const STI = "C:\WINDOWS\Profiles\Søren\Dokumenter\" 'Navn på databasen: Const STRDB = "db1.mdb" 'navn på tabel: Const TABEL = "table1"
Dim db As Database Dim q As QueryDef Dim rs As Recordset Dim strsql As String
'SQL streng: strsql = "SELECT * FROM " & TABEL & " WHERE nr=" & nr
Set db = OpenDatabase(STI & STRDB) Set rs = db.OpenRecordset(strsql) If Not rs.EOF Then HentKunde = rs.Fields(Feltnavn) db.Close End Function
I et arkmodul kan HentKunde funktionen herefter kaldes fra Change eventet:
Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address = "$A$1" Then Range("A2") = HentKunde(Target.Value, "NAVN") End Sub
(Feltet i tabllen hedder "navn". ´Hvis der skrives nummer i celle A1, vil navn fenkomme i a2 hvis det findes i access tabellen)
nerø tak for hjælpen indtil videre men det virker ikke som det skal, nu kan den ikke genkende mdb formattet, hvorfor. Der kan sagtens blive tale om flere point, hvis du har en løsning
Tja.. Jeg skifter mellem Access 97 og access 2000 som bruger et andet format end 97\'eren. Så hvis du har konverteret db\'en til access 2000 kan den ikke kaldes fra Excel 97.
Noget andet er at du i VBA skal huske at lave en reference til DAO. Men det lyder ikke som om det er det der er problemet.
Det forekommer mig som om der er nogle fejl i koden, ved dog ikke om dette er rigtigt bl.a. dette (WHERE nr=\" & nr) skulle dette ikke være noget i retningen af WHERE nr=\" & \"$A$1\"
Det skulle være godt nok med nr, idet parameteren overføres fra regnearket. Hvis du i regnearket skriver =hentkunde(a1;\"navn\"), overfører funktionen værdien i a1 via nr. Hvis der f.eks. står 10 i celle a1, bliver sql strengen: \"SELECT * FROM TABLE1 WHERE nr= 10\"
Jeg kan prøve at sende dig et lille eksempel regneark og database
Glemte det. Her er den så mads.hansen@mobilixnet.dk Jeg her utrolig store problemer med at køre eksperten der hjemme på mit ISDN 2 modem kender du til dette. Blot en side bemærkning på forhånd tak for eksemplet.
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.