Robert的文件夹中有很多文件。他想要一种从文档中提取所有拼写错误的单词并将这些单词放在新文档中的方法。

幸运的是,Word通过使用宏使此操作相对容易。

这是因为可以通过检查.SpellingError集合在VBA中访问拼写错误。此特殊收藏集中的每个项目都代表文档中的拼写错误。

考虑到这一点,下面的宏显示了如何将文件夹中每个文档的所有拼写错误汇总在一起。

Sub CheckFolderForSpellErrors()

'Copy all misspelled words in each document     'from one directory to a new document.

'Also lists all documents that have no spelling errors

Dim cWords As New Collection     Dim cDocs As New Collection     Dim vItem As Variant     Dim rng As Range     Dim docSourse As Document     Dim docNew As Document     Dim vDirectory As String     Dim vFile As String     Dim bNoSpellingErrors As Boolean

Application.ScreenUpdating = False

vDirectory = "C:\MyFolder\"           ' Path to check

' Find first file to check     vFile = Dir(vDirectory & ".doc")



Do While vFile <> ""

Documents.Open FileName:=vDirectory & vFile         Set docSource = ActiveDocument

If docSource.SpellingErrors.Count > 0 Then             cWords.Add Item:="Spelling errors found in " & vFile & vbCrLf

' add each word to the collection             For Each rng In docSource.SpellingErrors                 cWords.Add Item:=rng.Text & vbCrLf             Next         Else ' doc has no spelling errors             bNoSpellingErrors = True             cDocs.Add vFile & vbCrLf         End If

ActiveDocument.Close (wdDoNotSaveChanges)

vFile = Dir     Loop

Set docNew = Documents.Add

For Each vItem In cWords         Selection.TypeText vItem     Next

If bNoSpellingErrors Then         Selection.TypeText "These documents have no spelling errors." & vbCrLf

For Each vItem In cDocs             Selection.TypeText vItem & vbCrLf         Next     End If

Application.ScreenUpdating = True End Sub

该宏使用Dir命令在指定文件夹(vDirectory变量)中找到以“ doc”某种变体结尾的任何文件。这些文件中的每一个都依次加载到Word中。加载后,将检查.SpellingErrors集合以查看其是否包含任何错误。如果是这样,则将拼写错误的单词的文本添加到cWords集合中。如果不是,则将文件名添加到cDocs集合中。

cWords或cDocs集合都没有什么特别的。创建它们只是为了保存在检查文件时发现的所有拼写错误和文件名。宏可以很容易地使用变量数组代替集合。

运行此宏时,需要牢记两件事。

首先,根据文件夹中文档的数量和每个文档的长度,它可能需要花费相当长的时间才能运行。运行宏时,我在一个包含9个文档的文件夹中执行此操作,每个文档平均约97页。宏仅用了不到8分钟的时间即可完成运行,而在运行时,我在Word中无能为力。 (实际上,您可能会很容易怀疑您的系统是否“挂起”。)

要记住的另一件事是,输出可能会很长并且看起来相当多余。这是因为拼写错误的单词可能会在.SpellingErrors集合中多次出现。例如,假设您有一个包含“ Cftype”一词的文档,该词显然被标记为拼写错误。如果该单词在文档中使用了30次,它将被标记30次,因此在拼写错误列表中将出现30次。尽管这超出了本技巧的范围,但是您可以修改宏以检查以前是否将某个单词标记为拼写错误,然后仅在唯一拼写错误的情况下才添加该单词。

注意:

如果您想知道如何使用此页面(或_WordTips_网站上的任何其他页面)中描述的宏,我准备了一个包含有用信息的特殊页面。

_WordTips_是您进行经济有效的Microsoft Word培训的来源。

(Microsoft Word是世界上最流行的文字处理软件。)本技巧(13488)适用于Microsoft Word 2007、2010、2013和2016。