31. oktober 2002 - 23:32Der er
13 kommentarer og 1 løsning
Trække info fra Access til Excel
Hej. Vil gerne kunne trække data fra Access ind i en faktura i excel ved at taste et varenr eller varenavn i excel og så skal den selv finde de andre oplysninger der er gemt i databasen omkring netop den vare hvis varenr jeg tastede ind. Evt. en anden måde uden brug af Access, men skal bruge Excel.... Alle de smarte fomler er ikke min stærke side så det skal nok skæres lidt ud i pap!
mugs> Den henter alle dater der står i databasen ved den funktione, jeg skal kunne taste et vare nummer ind i Ecxel og så få resten af oplysningerne på den vare hvor det nr høre til!
bak> Kan jeg ikke få til at fungere, som sagt skal det nok skæres lidt ud i pap for mig!
Ok. Først gør du som Mugs skriver. Lige inden guiden slutter har du mulighed for at se dine data i MSQUERY. i MSQUERY kan du så se alle data. Under view klikker du på Criteria, så disse bliver vist. I criterierne vælger du så varenummer frem. nedenunder skriver du [test] (husk firkantparateserne) Vælg filer -> afslut og returner data til excel Du bliver nu spurgt om parameteren, bare tryk OK. Så kommer en box der spørger hvor du vil have dine data. I denne box klikker du på parametre. Din parameter kommer nu op og du afkrydser "hent værdien i følgende celle" og udpeger nu fx. A1. Tryk "opdater automatisk når celleværdien ændres" og OK Hver gang du for eftertiden ændrer A1 kører forespøgslen og ny data hentes.
Hvis du opretter et separat ark til data kan du stadig udpege en celle på fakturaarket som criterie og hente de nye data om på fakturaarket
fud > Så gør du en fejl. Jeg har lige prøvet igen, og du får vist et filtreringsvindue, hvor du kan sætte dine kriterier. Noget i stil med:
I venstre side får du vist felterne, og ved at markere 1 eller flere felter, kan du i højre side vælge hvilken karakter feltet skal være =, >, eller <. Så kører det.
Og dog - Jeg bruger Office97 - Måske er der en forskel?
Rigtigt mugs, men så skal han jo det igennem hver gang han skifter varenummer. Jeg har lige prøvet i filtreringsvinduet at vælge "er lig med" og så sætte [test] ind. incl [] Det skaber også en parameterquery og gør det unødvendig at gå helt ind i msquery. Den spørger så efter en parameterværdi, når der afsluttes. Indsæt bare en værdi og fortsæt. I boxen "returnering af data" angiv hvor du ønsker data placeret og klik så på "Parametre". Din parameter kommer nu op og du afkrydser "hent værdien i følgende celle" og udpeger nu fx. A1. Tryk "opdater automatisk når celleværdien ændres" og OK
Nu er det her jo ikke så nemt uden at have set din database og dit regneark, men... Jeg forudsætter at du vil skrive varenummeret ind i celle A1 og have data ud i celle A5 (varetekst) og A7 (disponent)
Denne kode indsættes i et alm. makromodul. I TOOLS->REFERENCES i VBA-editoren skal du sætte flueben i Microsoft DAO 3.x Object Library
Sub GetTable() Dim Db As Database Dim Rs As Recordset Dim Ws As Worksheet Dim Path As String Set Ws = ActiveSheet Dim sqlstr As String
'*** sti til database *** Path = "O:\Varedatabase.mdb" 'Her indsætter du navn og sti på din accessdatabase
'*** SQL-streng med reference til A1 *** '**** dvs at den skal finde den record i access hvor Varenummeret er lig med det du har skrevet i A1 sqlstr = "SELECT * FROM Lager WHERE VareNummer =" & Range("A1").Value & ";"
'*** Hent data *** Set Db = Workspaces(0).OpenDatabase(Path, ReadOnly:=True) Set Rs = Db.OpenRecordset(sqlstr)
'*** Indsæt VareTekst i A5 og Disponent i A7 *** Ws.Range("A5") = Rs.Fields("Varetekst") Ws.Range("A7") = Rs.Fields("Disponent")
'*** luk databasen igen *** Rs.Close Db.Close End Sub
Hvis du skal have det til at køre automatisk når du ændrer i A1, skal du indsætte næste kode i arkets eget kodemodul. (stil dig på regnearket, højreklik på arkfanen og vælg "Vis koder" og indsæt den. Det betyder at hvergang A1 ændres kaldes den første kode og nye data hentes
Private Sub Worksheet_Change(ByVal Target As Range) If Not Intersect(Target, Range("A1")) Is Nothing Then Call GetTable End Sub
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.