Simon Jones förklarar hur man behärskar begreppet fält i word, och ger en lösning för att Outlook 2007 saktar ner.
Microsoft Word är en komplex programvara. Ett av dess mest avancerade begrepp är ”fältet”, där det som ser ut som en vanlig textbit faktiskt antingen är ett resultat som har beräknats av Word (som till exempel sidnumret eller numret på ett objekt i en lista); något som har letats upp från någon annanstans i dokumentet (med en korshänvisning, till exempel), eller som har slagits upp från dokumentets metadata (som författarens namn eller datumet då dokumentet senast skrevs ut). Fält kan användas för att bland annat göra innehållsförteckningar och register, och för att sätta sidnummer i sidhuvuden eller sidfötter.
Om du inte specifikt har låst dem uppdateras fälten i ett dokument varje gång dokumentet öppnas, och det finns ett alternativ att automatiskt uppdatera dem före utskrift. Du kan låsa ett fält genom att markera det och trycka på
Ett Word-dokument består av en eller flera ”berättelser” och var och en har sin egen samling av fält. Huvudtexten i ett dokument är en berättelse, men det kan finnas många andra – kommentarer, slutnoter, sidhuvuden, sidfötter, fotnoter och textramar, till exempel – och om ditt dokument innehåller något av dessa måste du besöka var och en separat och Tryck
Spela in ett makro medan du skriver
Sub SimpleUpdateAll()
Selection.WholeStory
Urval.Fält.Uppdatering
Som du kan se väljer den hela berättelsen och uppdaterar sedan fält i urvalet, men den nämner ingen annan berättelse. Om du spelar in processen att gå in i sidfoten och sedan uppdatera dess fält som ett makro, får du den här arkaiska koden:
WordBasic.ViewFooterOnly
Selection.WholeStory
Urval.Fält.Uppdatering
WordBasic dödades av Visual Basic for Applications när Word 97 släpptes men, som du kan se, lurar fortfarande rester av det inuti makroinspelaren. Om du spelar in ett makro där du besöker varje artikel i ett dokument och uppdaterar dess fält, skulle det makrot vara specifikt för det dokumentet vid den tidpunkten i dess produktionscykel. Lägg till ytterligare ett avsnitt till dokumentet och makrot skulle inte veta om det; kör det på ett dokument som inte har några slutnoter, och makrot kraschar när du försöker välja en slutnot.
Det du behöver är loopar som kan iterera genom alla berättelser i ett dokument och de olika objekten i dessa berättelser. Lyckligtvis innehåller varje Word-dokumentobjekt en StoryRanges-samling, som innehåller de olika berättelsetyperna.