06. december 2013 - 14:57Der er
10 kommentarer og 1 løsning
Tabel fra Access til Word
Hej
Jeg har en stor mængde data, som jeg samler i Access. Jeg har nu nogle brugere, som - gerne simpelt og uden det store kendskab til Access - skal kunne hente data over i en foruddefineret tabelskabelon i Word. Hvordan gør jeg det på den nemmeste måde?
Har forsøgt med bl.a. brevfletning men får jo ikke alle data ind i én samlet tabel. Har også forsøgt at oprette en excel-tabel i word med en dataforbindelse til Access, som fungerer, men som hurtigt kan gå galt og lidt besværlig at vedligeholde.
Skal brugerne kunne vælge hvilke data de ønsker? Er det flere poster fra en tabel?
Fra Word med en VBA-reference til Access kan data (f.eks. alle felter fra en given post) hentes og placeres i en tabel i dokumentet - uden at brugerne behøver at gøre andet en at åbne en Word-skabelon m/VBA-kode og så f.eks. via en Userform kan foretage de nødvendige valg.
Ja, det vil være godt, hvis brugeren kan vælge hvilke data, der skal med. Men ellers vil det være alle poster i Access-tabellen der skal over i Word. Det skal bruges i en rapportskabelon til afrapportering af dataene. Har du et eksempel på en VBA-reference?
Selv reference sættes i Word således: (anvender Office 2007) - Alt+F11 (VBA-vinduet) -- Tools --- References ---- Microsoft Office 12.0 Access database engine Object ----- sæt flueben ved denne og Gem
Referencerne er anført i alfabetisk orden
Selv VBA-koden afhænger af, hvordan data skal vælges.
Jeg tror det skal være så simpelt som muligt. Så det er hele tabelvisningen fra min forespørgsel i Access, der skal føres over i tabel i Word. Jeg har ikke arbejdet med VBA i Word - kun i Excel. Kan du hjælpe mig igang med en simpel en, som jeg kan arbejde videre med?
Her er kode fra Word-dokumentet Hvis du er interesseret i filerne - så send en mail. @-adresse under min profil.
Dim svar As Byte Private Sub Document_Open() svar = MsgBox("Opdater tabel", vbYesNo, "Hent data fra Access?") If svar = 6 Then hentData Else Exit Sub End If End Sub Private Sub hentData() Const DBsti = "C:\Users\peter\Desktop\srsten\Database1.accdb" 'SKAL JUSTERES Dim db, fsp_tabel Dim antalPoster As Integer, p As Integer, række As Integer Application.ScreenUpdating = False
række = 1
Rem åbn database Set db = OpenDatabase(DBsti)
Rem Åbn forespørgsel Set fsp_tabel = db.OpenRecordset("forespørgsel1")
With fsp_tabel .MoveLast antalPoster = .RecordCount
If antalPoster > 0 Then .MoveFirst For p = 1 To antalPoster indsætFelt .Fields(0), række, 1 'skal justeres indsætFelt .Fields(1), række, 2 '- række = række + 1 .MoveNext Next p End If .Close End With
Rem Luk DB db.Close End Sub Private Sub indsætFelt(værdi, ræk, kol) With ActiveDocument.Tables(1) .Cell(ræk, kol).Select Selection = værdi End With 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.