24. januar 2011 - 09:40Der er
5 kommentarer og 2 løsninger
Overførsel af data fra Access til Word bookmarks
Jeg sidder og roder med at prøve at overføre data fra Access til bookmarks i et Word dokument. Men jeg synes det virker lidt mystisk for når jeg definerer 4 bookmarks og indsætter data som nedenstående, så ser det ud til at de første bookmarks bliver slettet og jeg ender op med et dokument hvor der kun står den sidst indsatte. Nogen der har leget med dette og har det til at virke?
Jeg ved godt at jeg bare kan fortsætte med mit eksisterende overførsel via en RTF fil, men det giver bare det issue at hvis jeg efterfølgende åbner det dannede dokument, så spørges efter datakilde og jeg ender som regel op med de forkerte adresseoplysninger. Ved overførsel via bookmarks kan jeg se en vej uden om dette. Og da det er et dokumentstyringssystem jeg arbejder med, så er det et af mine issues på nuværende tidspunkt.
Private Sub Command0_Click()
Dim objWord As Word.Application
Set objWord = CreateObject("Word.Application")
With objWord .Visible = True .Documents.Add ("D:\Temp\Test.docx")
Private Sub Kommandoknap21_Click() Dim objword As New Word.Application Dim WordDoc As New Word.Document On Error GoTo Errorhandler Set WordDoc = objword.Documents.Add("H:\Opskrifter\Opskrift.doc") Call InsertAtBookmark(WordDoc, "Opskrift", Me!Opskrift) Call InsertAtBookmark(WordDoc, "Nr", Me!Nr) Call InsertAtBookmark(WordDoc, "Krydderi", Me!Krydderi) Call InsertAtBookmark(WordDoc, "Dato", Me!Dato) Call InsertAtBookmark(WordDoc, "MType", Me!MType) Call InsertAtBookmark(WordDoc, "Personer", Me!Personer) objword.Visible = True DoCmd.Hourglass False Errorhandler: If Err.Number = 94 Then MsgBox "Du skal udfylde alle felter, da Access ikke kan overføre tomme strenge", vbInformation, "Brugerfejl" Exit Sub End If End Sub
Function InsertAtBookmark(objWordDoc As Word.Document, strBookmark As String, strText As String) As Boolean With objWordDoc.Bookmarks If .Exists(strBookmark) Then .Item(strBookmark).Range.Text = strText InsertAtBookmark = True End If End With End Function
Det er ikke en referencefejl - hvis jeg bruger .Bookmarks(strBookmark).Range.InsertBefore strText så indsætter den korrekt. Men så står den oprindelige tekst der bare stadig.
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.