02. juni 2003 - 13:07Der er
13 kommentarer og 1 løsning
Data fra Exceldata til Word Brugerformular ved hjælp af VBA
Jeg har en brugerformular til indtastning af navn, adresse, postnummer og by. (lavet med VBA)
Jeg har et excel regneark med postvæsenes postnummerliste, men hvordan får jeg mit By felt på formularen opdateret med det bynavn, der svarer til det postnummer der indtastes, så udfyldningen sker automatisk, når man forlader postnummerfeltet. Jeg har søgt på Eksperten og fundet ansvisning med Access database, men jeg ønsker det bliver hentet direkte fra regnearket.
F.eks. =VLOOKUP(A1;'C:\Various\[Test.xls]Ark1!A1:B100;2;FALSE)
Synes godt om
Slettet bruger
02. juni 2003 - 17:27#6
Jeg spørger ikke fra et andet ark, men fra kodemodulet i en UserForm.
Jeg har idag en kode der leder i en Access base, det er den kode jeg gerne vil have ændret, så den søger i et Excelark i stedet. Jeg er ikke bekendt med brugen af DAO, så jeg er lidt på den. (meget på den)
Private Sub UserForm_Initialize() Set e = CreateObject("DAO.DBEngine.36") Set ws = e.Workspaces(0) Set db = ws.OpenDatabase("C:\Postnr.mdb", True, True) Set rs = db.OpenRecordset("POSTNUMRE", dbOpenSnapshot)
End Sub
Private Sub txtPostnr_Exit(ByVal Cancel As MSForms.ReturnBoolean) rs.FindFirst "POSTNUMMER='" & txtPostnr.Text & "'" If Not rs.NoMatch Then Me.txtBynavn.Text = rs("BYNAVN")
End If End Sub
bynavnet indsættes i den textbox der er i formularen, og efterfølgende sættes det ind i skabelonen sammen med mange andre oplysninger.
Hver gang postnummer-feltet i userformen ændres kunne den sætte denne værdi over i dit regneark. Her kunne du så lave dit opslag i en celle og returnere den til userfomen.
Du kan bruge denne ene sub. Bemærk: Husk at ændre filnavn og at jeg har navngivet hele tabellen "data"
Private Sub txtPostnr_Exit(ByVal Cancel As MSForms.ReturnBoolean) Dim db As DAO.Database, rs As DAO.Recordset Set db = OpenDatabase("C:\Post.xls", True, True, "Excel 8.0;HDR=Yes;") Set rs = db.OpenRecordset("data", dbOpenSnapshot) rs.FindFirst "Postnr='" & txtPostnr.Text & "'" If Not rs.NoMatch Then txtByNavn = rs("Bynavn") End Sub
Synes godt om
Slettet bruger
03. juni 2003 - 14:08#10
jkrons - fordi brugeren indtaster modtager navn og adresse samt reference overskrift i formularen, og det virker forvirrende hvis ikke bynavnet ses, når der indtastes postnummer.
janvogt - som du kan se, skal den ind i word, alle postnumre ligger i databasen.
Alle disse oplysninger indsættes i brev, der er dannet p.g.a. af en wordskabelon, sammen med d.d. og brevskriverens underskrift, firmanavn, tlf., fax, mobil, e-mail. Disse oplysninger ligger i en ini fil, som brugeren udfylder een gang for alle. Så derfor.........
bak - de ser ud til at være det jeg søger, jeg tjekker det lige og vender tilbage. Fik ellers importeret excel til access og lavet lidt om på den gamle kode, så problemet blev løst til tiden. Ville dog være glad hvis jeg også kan hente data fra excel.
Du kan selvfølgelig også bruge din egen kode :-) Her skal tabellen være navngivet "POSTNUMRE" Husk at du skal lave en
Public rs As Recordset i et alm. modul så rs kan bruges af begge procedurer
Private Sub UserForm_Initialize() Set e = CreateObject("DAO.DBEngine.36") Set ws = e.Workspaces(0) Set db = ws.OpenDatabase("C:\Post.xls", True, True, "Excel 8.0;HDR=Yes;") Set rs = db.OpenRecordset("POSTNUMRE", dbOpenSnapshot) End Sub
Private Sub txtPostnr_Exit(ByVal Cancel As MSForms.ReturnBoolean) rs.FindFirst "POSTNUMMER='" & txtPostnr.Text & "'" If Not rs.NoMatch Then Me.txtByNavn.Text = rs("BYNAVN") End If End Sub
Synes godt om
Slettet bruger
03. juni 2003 - 20:37#12
Bak. Det virker bare perfekt med exel også. Kan du fortæller mig, hvad "Excel 8.0;HDR=Yes;")betyder?
Excel 8,0;HDR=Yes henviser til en excelversion (jeg kan dog ikke få den til at virke hvis jeg skriver 9.0) HDR=yes = er der overskrifter ja/nej
Synes godt om
Slettet bruger
03. juni 2003 - 23:29#14
Tak for forklaringen.
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.