Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

[Word 2003] Brondocumenten, automatisch updaten

Pagina: 1
Acties:

  • kamerplant
  • Registratie: Juli 2001
  • Niet online
Hey,

We zitten in een situatie waarin dezelfde stukken tekst (10-30 pagina's) in meerdere documenten moeten verschijnen. Om het beheersbaar te laten hebben we deze teksten in aparte Word documenten geplaatst. Vervolgens hebben we een aantal documenten gemaakt die puur en alleen gegevens uitlezen uit de brondocumenten.

Bijvoorbeeld:
Brondocumenten:
B1.doc
B2.doc
B3.doc
B4.doc

Doeldocumente:
A1.doc (bestaat uit B1.doc, B2.doc)
A2.doc (bestaat uit B1.doc, B2.doc, B3.doc)
etc.

Het doel
Zodra een brondocument wordt gewijzigd, moet dit direct zichtbaar zijn in de doeldocumenten zonder handmatige handeling door een beheerder.

De oplossing
In het doeldocument voegen we de juiste bronnen toe dmv "Invoegen > Bestand". De documenten worden nu ingevoerd en zijn zichtbaar als veld. Deze velden moeten iedere keer automatisch geupdate worden zodra het document wordt geopend. Hiervoor is een Macro: WD2000: How to Automatically Update Fields

Deze macro moet vervolgens automatisch worden geupdate. Dit zou moeten kunnen door de Macro de naam "AutoExec" te noemen. (WD2000: Auto Macros in Word)

Het probleem
AutoExec is helaas niet geschikt wegens het volgende:
The AutoExec macro runs when Word starts if the AutoExec macro was saved as part of the default (Normal.dot) template or if it was saved as part of a global add-in.
De velden moeten op iedere computer direct werken, aangezien Normal.dot lokaal staat is de oplossing AutoExec niet werkbaar :S.

Er is een tweede probleem. Bovenin staat in het doeldocument een inhoudsopgave. Het updaten van de velden gaat van boven naar beneden. Dus eerst haalt hij de velden leeg, dan maakt hij de inhoudsopgave (alles is leeg, dus dat gaat mis) en dan pas de rest van het document. Ik zou graag willen dat de inhoudsopgave pas op het eind wordt geupdate. Maar hoe?

Weet iemand een oplossing voor deze twee problemen? Of heeft iemand een beter idee hoe het doel kan worden bereikt? Thanks!

🌞🍃


  • BtM909
  • Registratie: Juni 2000
  • Niet online

BtM909

Watch out Guys...

Als je in je macro editor zit, kan je ook het Document_Open() event gebruiken :)

Visual Basic:
1
2
3
Private Sub Document_Open()

End Sub

[ Voor 5% gewijzigd door BtM909 op 09-04-2009 16:41 ]

Ace of Base vs Charli XCX - All That She Boom Claps (RMT) | Clean Bandit vs Galantis - I'd Rather Be You (RMT)
You've moved up on my notch-list. You have 1 notch
I have a black belt in Kung Flu.


  • kamerplant
  • Registratie: Juli 2001
  • Niet online
Tnx Randy :).

Maar somehow werkt dat niet. Maar via een andere bron *kuch* heb ik een oplossing gevonden die beiden problemen tackelt, het werkt uitstekend. Dus ik wil hem graag delen omdat ik mij goed kan voorstellen dat meerdere mensen dit ooit willen weten:


Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Sub AutoOpen()
Dim oStory As Range
Dim oTOC As TableOfContents
  For Each oStory In ActiveDocument.StoryRanges
    oStory.Fields.Update
    If oStory.StoryType <> wdMainTextStory Then
      While Not (oStory.NextStoryRange Is Nothing)
        Set oStory = oStory.NextStoryRange
        oStory.Fields.Update
      Wend
    End If
  Next oStory
  Set oStory = Nothing
    For Each oTOC In ActiveDocument.TablesOfContents
        oTOC.Update
    Next oTOC
End Sub


Ik kan hem wel proberen uit te leggen, maar om eerlijk te zijn snap ik hem zelf niet echt, maar het werkt O-).

🌞🍃