Avatar billede hugopedersen Nybegynder
24. januar 2011 - 09:40 Der 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")
 
    .ActiveDocument.Bookmarks("Navn").Range.Text = "Hugo Pedersen"
    .ActiveDocument.Bookmarks("Adresse1").Range.Text = "Prinsensvej 18"
    .ActiveDocument.Bookmarks("Adresse2").Range.Text = "Sejerslev"
    .ActiveDocument.Bookmarks("PostBy").Range.Text = "7900 Nykøbing Mors"

  End With

End Sub
Avatar billede mugs Novice
24. januar 2011 - 09:48 #1
Jeg bruger denne i ACC 2003 uden problemer:

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
Avatar billede hugopedersen Nybegynder
24. januar 2011 - 10:01 #2
Det virker ikke i min 2007

Det er rent faktisk så slemt at den sletter den tekst jeg har på linier over mine bookmarks.

Gad vide om der er en eller anden indstilling i Word der skal være enabled for at det kan lade sig gøre.
Avatar billede mugs Novice
24. januar 2011 - 10:23 #3
Hvilken fejl får du? Det kan være en referencefejl. Hvis du lægger din e-mail, kan jeg sende deig et eksempel.
Jeg er lige væk 1-2 timer.
Avatar billede hugopedersen Nybegynder
24. januar 2011 - 10:32 #4
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.

Det må være et eller andet der er lavet om i 2007
Avatar billede supertekst Ekspert
24. januar 2011 - 10:44 #5
Anvender denne i 2007 - uden problemer:

Private Sub indsætBogmærke(bm, tekst)
    ActiveDocument.Bookmarks(bm).Select
    Selection.TypeText Text:=tekst
End Sub
Avatar billede hugopedersen Nybegynder
24. januar 2011 - 11:04 #6
Det ser ud til at det er linien Selection.TypeText Text:=tekst der gør hele forskellen.

De tests jeg har kunnet køre indtil videre ser i hvert fald ud til at virke.

Så skal jeg 'bare' have det implementeret i min dokumentsystem :-)
Så håber jeg at blive fri for at høre om de fejl med flettefiler.


Så jeg skal lige have et svar fra jer begge da jeg har brugt input fra begge forslag.
Avatar billede supertekst Ekspert
24. januar 2011 - 11:18 #7
Godt nok - du får et svar
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Dyk ned i databasernes verden på et af vores praksisnære Access-kurser

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester