4

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

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

我如何创建一个宏来做到这一点?

4

5 回答 5

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
于 2012-06-06T16:06:14.253 回答
3

谢谢蒂姆,你的代码很好用!

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

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

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

于 2013-07-23T08:39:43.907 回答
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 =匹配
  • JSS =匹配
  • JK&S.K =匹配
  • JSK =匹配
  • JK =匹配
  • DKD And Sons =没有比赛
  • J&K Engineering =不匹配
  • PKF Rogers and Associates = 不匹配

我使用RegExHero来测试我的表达

于 2015-03-23T07:27:37.543 回答
1

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

regEx.Pattern = "\([A-Z]{1,}([a-z]*|\&|\.|\-*)[A-Z]{1,}\)"
于 2015-07-20T22:31:22.530 回答
0

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

  1. 按“录制宏”。选择一个唯一的名称,并指定一个快捷键,例如 CTRL + ALT + A。
  2. 打开查找对话框 (CTRL + F)。粘贴以下搜索文本: <[A-Z]{2,}>. 在“查找”对话框中,选择“更多”> 选中“使用通配符”复选框。单击查找下一个按钮。
  3. 右键单击所选文本,注意不要更改突出显示。从上下文菜单中选择复制。
  4. 导航到单独的 Word 文档(ALT + TAB,选择 Word 文档)。粘贴复制的文本,然后按 Enter。ALT + TAB 回到原来的 Word 文档。
  5. 关闭查找对话框并单击右箭头一次。这会将光标从突出显示的文本上移开,并为下一次搜索做好准备。
  6. 停止宏录制。

您现在有一个宏,它可以查找包含两个或多个大写字母的单词,并将文本保存到单独的文档中。要搜索剩余的首字母缩略词,请连续按 CTRL + ALT + A 直到到达文档末尾。或者,编辑宏,并添加 while 循环。

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

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
于 2012-06-06T17:23:43.787 回答