自动创建缩写词列表(Microsoft Word)
卡尔从事的职业使用很多首字母缩写词。他们的标准程序是仅在文档中首次使用首字母缩写词时进行定义。此外,他们总是需要在文档末尾创建一个附录,以字母顺序列出首字母缩写词及其含义。卡尔(Karl)正在寻找一种方法来“标记”
主体中的首字母缩写词并自动创建首字母缩写词附录。
没有办法直接在Word中执行此操作。您可以自动创建几种类型的表,例如目录表,权限表和索引。这最后两个表(权限表和索引表)可以用于创建首字母缩写词列表,但前提是尚未将它们添加到文档中,并且仅当您不介意首字母缩写词列表(包括页码)时。
如果要使用权限表工具来创建首字母缩写词列表,Shauna Kelly会撰写一篇很棒的文章,介绍如何完成此工作。本文专门讨论词汇表,实质上是首字母缩写词列表。
http://www.ShaunaKelly.com/word/glossary/glossary.html
如果要使用索引工具来创建列表,则可以遵循以下一般步骤,假设首字母缩写定义时在括号内紧跟其含义:
。选择首字母缩写词及其含义。这意味着您在文档中找到首字母缩写词的第一个实例,然后选择该首字母缩写词以及其后的括号含义。
。按Alt + Shift + X键将所选文本标记为索引。
。对列表中想要的其他首字母缩写重复步骤1和2。
。在文档末尾,插入索引。 WordTips的其他问题已经介绍了如何实际插入索引。
您会注意到,这种方法将括号留在索引中。如果不想使用括号,则需要转到标记的每个首字母缩写词并显示用于索引的域代码。看起来像这样:
{ XE "abbrev (this is the definition)" }
在域代码中,您可以删除括号,以使文本看起来像您希望它出现在首字母缩写列表中一样。如果使用上述方法仅标记首字母缩写词的第一个实例(首次定义的实例),则列表中每个字母缩写词将只有一个页码。如果您喜欢具有页码的想法,但希望每个首字母缩略词的所有实例都使用页码,则需要标记每次出现的首字母缩略词,这是一项涉及更多的任务。
如果您不想使用已描述的任何一种方法,则可以创建一个宏来帮助您创建首字母缩写词列表。下面的宏实际上将您突出显示的任何文本复制到文档末尾。
Sub Send_2_acronym_list() With ActiveDocument.Bookmarks .Add Range:=Selection.Range, Name:="xxxHERExxx" .DefaultSorting = wdSortByName .ShowHidden = True End With Selection.Copy Selection.EndKey Unit:=wdStory Selection.TypeParagraph Selection.PasteAndFormat (wdPasteDefault) Selection.GoTo What:=wdGoToBookmark, Name:="xxxHERExxx" Application.Run MacroName:="Normal.MoreNewMacros.EditGoTo" Selection.MoveRight Unit:=wdCharacter, Count:=1 End Sub
想法是选择首字母缩写词及其定义,然后调用宏。在当前位置设置一个书签,复制文本,选择文档末尾,然后在此处添加文本。然后使用书签,以便可以再次选择原始位置。
用这种方式“标记”首字母缩写词后,您可以选择复制到文档末尾的文本并以所需的任何方式对其进行格式化(或编辑)。
如果您想要一种更加自动化的方法,则可以创建一个宏,该宏将扫描您的文档并提取其找到的首字母缩写词。为了使这种方法可行,您需要确保严格遵循首字母缩写词及其定义的严格结构。下面的宏假定首字母缩写始终是一串大写字母,后跟一个空格,然后是一些括号内的文本。
Sub ListAcronyms() Dim strAcronym As String Dim strDefine As String Dim strOutput As String Dim newDoc As Document Application.ScreenUpdating = False Selection.HomeKey Unit:=wdStory ActiveWindow.View.ShowHiddenText = False 'Loop to find all acronyms Do 'Search for acronyms using wildcards Selection.Find.ClearFormatting With Selection.Find .ClearFormatting .Text = "<[A-Z]@[A-Z]>" .Replacement.Text = "" .Forward = True .Wrap = wdFindStop .Format = False .MatchCase = True .MatchWildcards = True .MatchWholeWord = True .Execute End With 'Only process if something found If Selection.Find.Found Then 'Make a string from the selection, add it to the 'output string strAcronym = Selection.Text 'Look for definition Selection.MoveRight Unit:=wdWord Selection.MoveRight Unit:=wdCharacter, _ Extend:=wdExtend strDefine = "" If Selection.Text = "(" Then While Selection <> ")" strDefine = strDefine & Selection.Text Selection.Collapse Direction:=wdCollapseEnd Selection.MoveRight Unit:=wdCharacter, _ Extend:=wdExtend Wend End If Selection.Collapse Direction:=wdCollapseEnd If Left(strDefine, 1) = "(" Then strDefine = Mid(strDefine, 2, Len(strDefine)) End If If strDefine > "" Then 'Check if the search result is in the Output string 'if it is, ignore the search result If InStr(strOutput, strAcronym) = 0 Then strOutput = strOutput & strAcronym _ & vbTab & strDefine & vbCr End If End If End If Loop Until Not Selection.Find.Found 'Create new document and change active document Set newDoc = Documents.Add 'Insert the text Selection.TypeText Text:=strOutput 'Sort it newDoc.Content.Sort SortOrder:=wdSortOrderAscending Application.ScreenUpdating = True Selection.HomeKey Unit:=wdStory End Sub
宏在文档中查找它认为可能是缩写的所有内容。如果找到候选者,它将照看它,看是否后面有括号。如果是这样,那么直到右括号为止的所有内容都被视为首字母缩写词的定义。宏在文档中浏览完毕后,将创建一个新文档,在其中添加首字母缩写词,然后对它们进行排序。
注意:
如果您想知道如何使用此页面(或_WordTips_网站上的任何其他页面)中描述的宏,我准备了一个包含有用信息的特殊页面。
_WordTips_是您进行经济有效的Microsoft Word培训的来源。
(Microsoft Word是世界上最流行的文字处理软件。)本技巧(10935)适用于Microsoft Word 2007和2010。您可以在此处找到适用于Word的较早菜单界面的本技巧的版本: