如何使用宏查找MS Word文档中的所有缩略语?

时间:2012-06-06 15:16:00

标签: vba ms-word acronym

我有一个包含许多首字母缩略词的文档需要捕获并放入文档末尾的首字母缩略词表中。

术语首字母缩略词有多种含义。我想创建一个包含所有初始化单词的表格;两个或多个大写字母,表示较长的含义。即,CD-ROM,USB,SYNC,MMR,ASCAP等。

如何创建宏来执行此操作?

5 个答案:

答案 0 :(得分:7)

这样的事可能会让你开始。添加对“Microsoft VBScript正则表达式”的引用(编辑宏:工具>引用)。该库是文件“vbscript.dll”。

如果您的所有首字母缩写词不仅仅是大写字母(例如某些字母可能包含数字),您可能需要调整正则表达式。

Sub Acronyms()

    Dim dict, k, tmp
    Dim regEx, Match, Matches
    Dim rngRange As Range
    Set regEx = New RegExp
    Set dict = CreateObject("scripting.dictionary")

    regEx.Pattern = "[A-Z]{2,}" '2 or more upper-case letters
    regEx.IgnoreCase = False
    regEx.Global = True
    Set Matches = regEx.Execute(ActiveDocument.Range.Text)
    For Each Match In Matches
        tmp = Match.Value
        If Not dict.Exists(tmp) Then dict.Add tmp, 0
        dict(tmp) = dict(tmp) + 1
    Next

    For Each k In dict.Keys
        Debug.Print k, dict(k)
    Next k

End Sub

答案 1 :(得分:2)

谢谢蒂姆,你的代码很棒!

如果它对其他人有用,那么模式[A-Z]{1,}([a-z]*|\&|\.*)[A-Z]{1,}会找到更多的缩略词......

(我无权发表评论,因此将其添加为答案)

编辑(仍无法添加注释):\b[A-Z]{1,}([a-z*]|\&|\.|\-)[A-Z]{1,}\b更强大,但如果首字母缩略词的最后一个字符未大写,则会失败。

答案 2 :(得分:2)

我发现以下效果很好(某些商业名称首字母缩略词是可以容忍的)。我使用它来测试Access中的数据条目,它也适用于Word文档范围。

objRegExp.Pattern = "([A-Z]{1,}((\&(?![A-Z]\s[\w]{3})\w*)+|\.\w*)+)|[A-Z]{2,}(?![A-Z]*\s[A-Z]{1}[a-z])"
  • J& K =匹配
  • JK& S =匹配
  • J.S.S =匹配
  • JK& S.K =匹配
  • JSK =匹配
  • JK =匹配
  • DKD And Sons = No Match
  • J& K Engineering = No Match
  • PKF Rogers and Associates =不匹配

我使用RegExHero来测试我的表达式

答案 3 :(得分:1)

我使用以下内容在我的博士论文中找到缩写。他们都在“()”。

regEx.Pattern = "\([A-Z]{1,}([a-z]*|\&|\.|\-*)[A-Z]{1,}\)"

答案 4 :(得分:0)

您将在主Word文档上运行宏。打开一个单独的Word文档,该文档为空白。这将用于存储发现的首字母缩略词。

  1. 按“录制宏”。选择一个唯一的名称,并指定一个快捷键 如CTRL + ALT + A。
  2. 打开“查找”对话框(CTRL + F)。粘贴以下搜索文本:     <[A-Z]{2,}>.在查找对话框中,选择“更多”&gt;选中“使用通配符”框。单击“查找下一个”按钮。
  3. 右键单击所选文本,注意不要更改     突出。从上下文菜单中选择“复制”。
  4. 导航到单独的Word文档(ALT + TAB,选择Word     文献)。粘贴复制的文本,然后按Enter键。 ALT + TAB回到     原始的Word文档。
  5. 关闭查找对话框,然后单击右箭头一次。这一举动     将光标移出突出显示的文本,然后为下一个文本准备好     搜索。
  6. 停止微距录制。
  7. 现在,您有一个宏,可以找到包含两个或更多大写字母的单词,并将文本保存到单独的文档中。要搜索剩余的首字母缩略词,请连续按CTRL + ALT + A,直到达到文档末尾。或者,编辑宏,并在循环时添加。

    这是宏看起来的样子(没有循环):

    Sub GetAcronyms()
        Selection.Find.ClearFormatting
        With Selection.Find
            .Text = "<[A-Z]{2,}>"
            .Replacement.Text = ""
            .Forward = True
            .Wrap = wdFindContinue
            .Format = False
            .MatchCase = False
            .MatchWholeWord = False
            .MatchAllWordForms = False
            .MatchSoundsLike = False
            .MatchWildcards = True
        End With
        Selection.Find.Execute
        Selection.Copy
        Windows("Document1.docx").Activate
        Selection.PasteAndFormat (wdPasteDefault)
        Selection.TypeParagraph
        Windows("TheOriginalDocument.docx").Activate
        Selection.MoveRight Unit:=wdCharacter, Count:=1
    End Sub