2013-07-21 3 views
1

Мне нужно создать индекс в конце документа MS Word, в котором перечислены все слова, используемые в документе, номер страницы, где он используется в алфавитном порядке. Могу ли я сделать это со встроенными возможностями индекса? Если да, то как мне это заняться? Или мне нужен макрос, и если да, то кто-нибудь может мне помочь со сценарием?Индекс всех слов, используемых в документе MS Word

ответ

2

Это требуется навсегда на больших документах, но генерирует поля Индекса, необходимые для создания Индекса в документе слова. После запуска этого макроса вы можете сделать References > Insert Index, чтобы иметь фактический индекс в вашем документе.

Dim colWords as Collection 
Set colWords = New Colection 
'add words you don't want to index 
colWords.Add "and" 
colWords.Add "you" 

Dim wrd As Range 
For Each wrd In ActiveDocument.Words 

    'only if we have 3 chars we index 
    If Len(Trim(wrd.Text)) > 2 Then 

    ' prevent the field from being Indexed as well... 
    Dim infield As Boolean 
    infield = False 
    Dim fld As Field 
    For Each fld In ActiveDocument.Fields 
     If (wrd.Start >= fld.Code.Start And wrd.End <= fld.Code.End) Then 
     infield = True 
     Exit For 'break out 
     End If 
    Next 

    If (Not infield) Then 
     ' check if we already indexed? 
     Dim findWord as String 
     findWord = LCASE(wrd.Text) 
     For Each cached in colWords 
      if cached = findWord Then 
       infield = True 
       Exit For 'break out 
      end If 
     Next 
     If (Not infield) Then 
      ActiveDocument.Indexes.MarkAllEntries Range:=wrd, Entry:=wrd.Text, _ 
      EntryAutoText:=wrd.Text, CrossReference:="", CrossReferenceAutoText:="", _ 
      BookmarkName:="", Bold:=False, Italic:=False 

      colWords.Add findWord 

     End If 
    End If 
    End If 
Next 
+0

Thanks Rene .. проверит это! – Craig

+0

Есть ли способ ускорить это, поскольку он падает на моей машине с 86-страничным документом? – Craig

+0

Я добавил бедный mans caching с коллекцией, которая уже содержит индексированные слова для этого запуска ... – rene

Смежные вопросы