Lägga Noterade Ord till ett index

December 24

Mike har ett dokument som innehåller en hel del ord som omges av citationstecken. Han vill att de citerade orden som ska märkas för att ingå i ett index och för citationstecken för att tas bort.

Det bästa sättet att göra en sådan förändring i ditt dokument är genom användning av ett makro. Makrot behöver för att söka efter den citerade texten, räkna ut där det börjar och slutar, ta bort citationstecken, och sedan lägga till indexmärket. (Märket läggs med hjälp av en XE fält.)

Det finns troligen många sätt att en sådan makro skulle kunna konstrueras. Följande är en som skulle kunna användas:

Sub QuotesToIndexEntries ()
Dim iOpenQuote As Integer
Dim iCloseQuote As Integer
Dim sP As String
Dim sPhrase As String
Dim iParas As Integer

Om Selection.ExtendMode Då Exit Sub

iParas = Selection.Paragraphs.Count
Selection.StartOf Enhet: = wdParagraph, Extend: = wdMove
För J = 1 Till iParas
Selection.MoveEnd Enhet: = wdParagraph
sP = Selection.Text
iOpenQuote = InStr (SP, Chr (34))
Om iOpenQuote = 0 Då iOpenQuote = InStr (sP, Chr (147))

Medan iOpenQuote> 0
iCloseQuote = InStr (iOpenQuote + 1, SP, Chr (34))
Om iCloseQuote = 0 Då
iCloseQuote = InStr (iOpenQuote + 1, SP, Chr (148))
End If
Om iCloseQuote> 0 Then
sPhrase = Mid (sP, iOpenQuote + 1, _
iCloseQuote - iOpenQuote - 1)
Selection.Collapse Riktning: = wdCollapseStart
Selection.MoveRight Enhet: = wdCharacter, _
Count: = iOpenQuote - 1, Extend: = wdMove
Selection.Delete Enhet: = wdCharacter, Count: = 1
Selection.MoveRight Enhet: = wdCharacter, _
Count: = Len (sPhrase), Extend: = wdMove
Selection.Delete Enhet: = wdCharacter, Count: = 1

Selection.Fields.Add Range: = Selection.Range, _
Typ: = wdFieldEmpty, _
PreserveFormatting: = False
Selection.MoveLeft Enhet: = wdCharacter, Count: = 1
Selection.Delete Enhet: = wdCharacter, Count: = 2
Selection.TypeText Text: = "XE" + Chr (34) + _
sPhrase + Chr (34)
Selection.MoveRight Enhet: = wdCharacter, _
Count: = 1, Extend: = wdMove
End If
Selection.MoveEnd Enhet: = wdParagraph
sP = Selection.Text
iOpenQuote = InStr (SP, Chr (34))
Om iOpenQuote = 0 Då iOpenQuote = InStr (sP, Chr (147))
Wend

Selection.MoveStart Enhet: = wdParagraph, Count: = 1
Nästa J
End Sub

För att kunna använda makrot, bara markera texten du vill påverka innan du kör den. (Om du vill påverka hela dokumentet, tryck på Ctrl + A innan du kör makrot.)

WordTips är din källa för kostnadseffektiv Microsoft Word utbildning. (Microsoft Word är det mest populära ordbehandlingsprogram i världen.) Detta tips (13240) gäller Microsoft Word 2007, 2010 och 2013. Du kan hitta en version av detta tips för den äldre menygränssnittet Word här: Lägga Citerat Ord till ett index.