Avatar billede hillig Nybegynder
16. juni 2006 - 11:12 Der er 7 kommentarer

VBA: opdatering "dræber" bogmærker

Halløjsa.

Jeg har længe brugt en VBA-form der henter nogle brugeroplysninger og fletter dem ind i en word-skabelon. Og det kørte godt. Efter at der er kommet en windows-opdatering ( helt præcis:KB912812) - har det givet nogle problemer.

Skabelonen kalder et kode-dokument, som skal indsætte data ind i bogmærker i brev-dokumentet. Før brugte jeg: ( del af kode )
"ActiveDocument.Bookmarks.Add "navn", testRange"
Men pludselig er det som om at der ikke er "adgang" til at køre koden. Jeg får en "Runtime error '5981' - makroen kan ikke åbnes". Nedtur.
Som jeg ser det, sker det så snart jeg forsøger at kalde ActiveDocument.Bookmarks.

Derfor har jeg forsøgt at bruge "Selection.GoTo"-koden, og det kan da også løse lidt af problemet. Men da jeg også har bogmærker i sidehoved - giver det også lidt problemer, da Selection.GoTo ikke kan "hoppe" direkte i sidehoved uden af det først bliver vist. Kan det passe at jeg kodemæssigt skal vise/skjule sidehoved når data tilføjes ?

Er der ikke en bedre måde?
Ellers har den opdatering bare låst alt det sjove i word ?

Alt hjælp er kærkommen  ;-)

/Mikael
Avatar billede rvm Nybegynder
16. juni 2006 - 14:05 #1
Det lyder lidt mærkeligt med den opdatering, men det kan faktisk godt passe at du skal åbne sidehovedet/sidefoden før du tilføjer data - ellers har du ikke altid adgang til bogmærkerne.
Avatar billede hillig Nybegynder
16. juni 2006 - 14:32 #2
Førhen kunne jeg altid adressere ALLE bogmærker med "ActiveDocument.Bookmarks", men det er som om det er lukket af for det. Kan det skyldes at koden ligger i en skabelon og brevet i en anden ?

Er det den bedste løsning mht. at bruge Selection.GoTo til at fylde data i bogmærker - for så viser/skjuler jeg bare sidehoved/fod.
Avatar billede Slettet bruger
16. juni 2006 - 19:37 #3
Jeg har haft samme problem, med at indsætte data fra en userform i sidefoden på et dokument, og fandt i stedet ud for at bruge select i stedet. Måske kan det gøre det. Her er et udsnit af min kode, håber du måske kan bruge den til inspiration.

'Indsætter i sidehoved/fod

    If ActiveDocument.Bookmarks.Exists("Kundenavn2") = True Then
      ActiveDocument.Bookmarks("Kundenavn2").Select
      If txtKundenavn <> "" Then
            Selection.TypeText Text:=txtKundenavn.Text
        End If
    End If
Avatar billede hillig Nybegynder
19. juni 2006 - 11:28 #4
hov-sa --> Problemet ligger i, at lige så snart jeg skriver:
'Kode-eksempel
If ActiveDocument.Bookmarks.Exists(BookmarkToUpdate) Then
'kode-eksempel slut
Så får jeg fejlen: "Makroen kan ikke åbnes". Kan det løses vil det være super.
Så indtil videre forsøger jeg at opdatere med Selection.Goto, men sidehoved/fod driller lidt som du selv er inde på.
Avatar billede hillig Nybegynder
19. juni 2006 - 11:37 #5
Lige en bonus-runde: Er der et stykke kode der kan gøre det så word springer op i sidehoved/fod ( og ud igen ). Når jeg "optager" koden ser det ikke ud til at virke som det skal.
For at Selection.GoTo kan springe til et sted i sidehoved/fod skal de åbentbart være aktive før det spiller ( som jeg kan se det )
Avatar billede Slettet bruger
19. juni 2006 - 23:45 #6
Jeg kan desværre ikke hjælpe yderligere. Er ikke VBA haj, og det er endda længe siden jeg selv havde problemet.
Håber du får det løst.
Avatar billede learningvba Nybegynder
20. juni 2006 - 08:38 #7
Ville ønske at jeg kunne genskabe dit problem, har forsøgt ;-), for vi bruger en del bogmærker iforb. med word.vba og bliver indimellem "udsat" for uvarslede opdateringer så vi kan blive "ramt" at dit problem.

Mht. at åbne/lukke sidehoved/fod, så prøv om dette kan hjælpe dig:
Private Sub ÅbenSideHovedSideFodLukIgen()
  ActiveDocument.Sections(ActiveDocument.Sections.Count).Headers(wdHeaderFooterFirstPage).Range.Select
  Selection.TypeText "Whatever in FirstPageHeader"
  ActiveDocument.Sections(ActiveDocument.Sections.Count).Footers(wdHeaderFooterFirstPage).Range.Select
  Selection.TypeText "Whatever in FirstPageFooter"
  ActiveWindow.ActivePane.Close
End Sub

Select markerer det hele og den efterfølgende TypeText erstatter derfor indhold, så lav din tilrettelse :-)
Sidste linie lukker og slukker :-)

Vær iøvrigt opmærksom på de råd der bliver givet i denne artikel: www.wordforums.com/printthread.php%3Fs%3D%26threadid%3D30225+activedocument.section+current&hl=en&ct=clnk&cd=4" target="_blank">http://72.14.203.104/search?q=cache:Dswjrqq6jEoJ:www.wordforums.com/printthread.php%3Fs%3D%26threadid%3D30225+activedocument.section+current&hl=en&ct=clnk&cd=4
selvom timingen nok ikke er den bedste da du har en anden problemstilling.

Mht. problem, hvad sker der hvis du laver en

Private Sub ShowAllBookmarks()
  Dim bm As Bookmark
  For Each bm In ActiveDocument.Bookmarks
      Debug.Print "BookmarkName: " & bm.Name & " - Range = " & bm.Range
  Next bm
End Sub

Giver det samme fejl, får du alle bogmærker med ud eller ?
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
Tag et kursus i Word og øg effektiviteten

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