03. november 2011 - 18:46Der er
27 kommentarer og 1 løsning
VBA overføre oplysninger fra database
Hej Eksperter
Jeg sider og roder med nogle VBA koder i et Word skabelon og vil defor høre om det er mulig at få VBA til at henter oplysninger fra Access database?
Det jeg gerne vil kunne, er når jeg indtaster initialer i en TeksBox så bliver peronen i en Access database fundet og persones navn, stilig, telefon nr og mail bliver overført til word bogmærker.
Er ny i VBA verden, så håber i forstår hvad jeg mener.
Altså ikke noget indeks på Initialer - det er heller kke et problem
Synes godt om
Slettet bruger
04. november 2011 - 17:46#8
Jeg er ikke helt med på hvad indeks er???
Men følgende kolonder er der i database (i rækkefølge)
Id - "Access selv har lavet" MA nr - "Medarbejdernummer" Initialer - "Medarbejderes Initialer" Navn - "Medarbejderes navn" Stilling - "Medarbejderes stilling" Mail - "Medarbejderes mailadresse" Tel - "Medarbejderes telefon nr"
Hver medarbejder har et "MA nr" som er unik for hver person, kan dette bruges??
Rem Reference til Microsoft Office 12.0 Access database engine object er sat Rem VBA-vindue (Alt+F11) / Tools (værktøjslinje) / References Rem ======================================================================= Const dataBaseNavn = "Medarbejder.accDB" Rem database & tabeller Dim db, medarbejder Dim sti As String Private Sub Tb_initialer_Exit(ByVal Cancel As MSForms.ReturnBoolean) If Me.Tb_initialer <> "" Then hentMedarbejderdata Me.Tb_initialer db.Close End If End Sub Private Sub hentMedarbejderdata(initialer) Set db = OpenDatabase(sti & dataBaseNavn)
Set medarbejder = db.OpenRecordset("medarbejder")
With medarbejder For r = 1 To medarbejder.RecordCount If LCase(initialer) = LCase(.Fields(2)) Then Me.Tb_navn = .Fields(3) Me.Tb_nummer = CStr(.Fields(1)) medarbejder.Close Exit Sub End If .MoveNext Next r End With
medarbejder.Close End Sub Private Sub userform_activate() sti = ActiveDocument.Path If Right(sti, 1) <> "\" Then sti = sti & "\" End If End Sub
Du skal blot ændre stien til databasen - altså skrive den rigtig mellem "'erne: Set db = OpenDatabase("databasesti" & dataBaseNavn)
Eks på sub, der kan kaldes til indsættelse af en værdi:
Private Sub indsætBogmærke(bogMærkeNavn, tekst) ActiveDocument.Bookmarks(bogMærkeNavn).Select Selection.TypeText Text:=tekst End Sub
Synes godt om
Slettet bruger
05. november 2011 - 09:03#15
Jeg tro jeg har fundet ud af det, med stien til databasen
Det ikke se sådan ud, ikke?:
Private Sub userform_activate() sti = ActiveDocument.Path If Right(sti, 1) <> "\" Then sti = "C:\Users\Parker-1\Documents\Dokumentskabeloner" & "\" End If End Sub
Det med bogmærker tro jeg vi har misforstået hinanden. Det jeg gerne vil kunne er at oplysninger fra databasen for personen dirikte overføres til bogmærker i word når man har trykket på en CommandButton. og ikke som nu hvor de bliver overført til TextBox.
Rem Reference til Microsoft Office 12.0 Access database engine object er sat Rem VBA-vindue (Alt+F11) / Tools (værktøjslinje) / References Rem ======================================================================= Const dataBaseNavn = "Medarbejder.accDB" Rem database & tabeller Dim db, medarbejder Dim sti As String Private Sub Tb_initialer_Exit(ByVal Cancel As MSForms.ReturnBoolean) If Me.Tb_initialer <> "" Then hentMedarbejderdata Me.Tb_initialer db.Close End If End Sub Private Sub hentMedarbejderdata(initialer) Set db = OpenDatabase(sti & dataBaseNavn)
Set medarbejder = db.OpenRecordset("medarbejder")
With medarbejder For r = 1 To medarbejder.RecordCount If LCase(initialer) = LCase(.Fields(2)) Then Me.Tb_navn = .Fields(3) Me.Tb_nummer = CStr(.Fields(1)) medarbejder.Close
Rem Indsæt bogmærker indsætBogmærke "nr", Me.Tb_nummer indsætBogmærke "navn", Me.Tb_navn Exit Sub End If .MoveNext Next r End With
medarbejder.Close End Sub Private Sub userform_activate() sti = ActiveDocument.Path If Right(sti, 1) <> "\" Then sti = sti & "\" End If End Sub Private Sub indsætBogmærke(bm, tekst) With ActiveDocument .Bookmarks(bm).Select Selection.TypeText Text:=CStr(tekst) End With End Sub
Synes godt om
Slettet bruger
05. november 2011 - 17:41#19
Hej supertekst
1000 Tak men der sker fejl i føjgene
Private Sub indsætBogmærke(bm, tekst) With ActiveDocument .Bookmarks(bm).Select Selection.TypeText Text:=CStr(tekst) End With End Sub
Er det rigtig forstået at der også blive sat bogmærker ind i word?
Const dataBaseNavn = "Medarbejderliste.accDB" Rem database & tabeller Dim db, medarbejder Dim sti As String Private Sub CommandButton1_Click() If Me.Tb_initialer <> "" Then hentMedarbejderdata Me.Tb_initialer End If End Sub Private Sub userform_activate() sti = ActiveDocument.Path If Right(sti, 1) <> "\" Then sti = sti & "\" End If End Sub Private Sub indsætBogmærke(bm, tekst) With ActiveDocument .Bookmarks(bm).Select Selection.TypeText Text:=CStr(tekst) End With End Sub Private Sub hentMedarbejderdata(initialer) Set db = OpenDatabase(sti & dataBaseNavn)
Set medarbejder = db.OpenRecordset("MA_liste")
With medarbejder For r = 1 To medarbejder.RecordCount If LCase(initialer) = LCase(.Fields(2)) Then indsætBogmærke "nr", CStr(.Fields(1)) indsætBogmærke "navn", .Fields(3) Rem... o.s.v. Rem...
medarbejder.Close Exit Sub End If .MoveNext Next r End With
medarbejder.Close db.Close End Sub
Synes godt om
Slettet bruger
09. november 2011 - 19:31#27
Hej Supertekst
Du bliver nøde til at lave et svar til så jeg kan give dig 200 point da man åben baret ikke kan give mere en 100 point af gangen :o(
Jeg kan ikke lægge flere svar, da du har afsluttet med accepter. I givet fald skulle du så oprette et helt nyt spørgsmål stilet til mig med henvisning til det oprindelige - hvis du skulle få brug for det en anden gang.
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.