Zikica有一个文档,其中包含许多文本选项,格式为红色。他想要一种选择红色文本的所有实例并将其复制到新文档的方法。他想知道这是否最好用宏来完成,或者是否有其他方法可以完成任务。

在使用宏完成任务之前,让我们先看看不使用宏即可完成此操作的几种方法。首先是按照以下步骤使用Word的“查找和替换”功能:

。打开一个新文件。 (这是将红色文本复制到的文档。)

。切换回原始文档。

。按Ctrl + H。 Word将显示“查找和替换”对话框的“替换”选项卡。

。单击查找选项卡。

。单击更多按钮(如果有)。对话框将展开。

(请参见图1。)

。如果没有格式按钮可用,请单击它。这消除了您以前可能搜索过的所有格式。

。确保“查找”框为空。

。单击格式按钮,然后单击字体。 Word将显示“查找字体”对话框。 (请参见图2。)

。单击字体颜色下拉列表,然后选择在文档中使用的红色阴影。

。单击“确定”关闭“查找字体”对话框。 Word将在“查找”框下方显示颜色信息。

。单击“查找范围”下拉列表,然后选择“主文档”。 Word选择文档中红色文本的所有实例,并在对话框中显示找到的实例数量。

。单击关闭以关闭“查找和替换”对话框。仍应选择所有红色文本实例。

。按Ctrl + C。这会将所有文本复制到剪贴板。

。切换到新文档。

。按Ctrl + V。 Word将所有红色文本粘贴到新文档中。

您还可以通过其他方式使用“查找和替换”来获得类似的解决方案。在这种方法中,首先要制作文档的副本,然后使用该副本进行工作:

。按Ctrl + H。 Word将显示“查找和替换”对话框的“替换”选项卡。

。单击更多按钮(如果有)。对话框将展开。

(请参见图3。)

。确保“查找”框为空,并且插入点位于该框中。

。单击格式按钮,然后单击字体。 Word将显示“查找字体”对话框。

。单击字体颜色下拉列表,然后选择自动。

。单击“确定”关闭“查找字体”对话框。 Word将在“查找”框下方显示颜色信息。

。确保“替换为”框为空。

。单击全部替换。 Word将显示一个对话框,通知您进行了多少次替换。

。单击“确定”关闭信息对话框。

。单击关闭以关闭“查找和替换”对话框。

此方法将删除文档中所有非红色文本,仅保留红色。 (这假设您在文档中仅包含常规文本和红色文本。如果要使用其他颜色,则需要重复这些步骤,并在步骤5中指定要删除的另一种颜色。)这是一个缺点方法是删除所有非红色文本,其中也可能包含段落结尾标记,因此您的红色文本可能会全部显示在一个段落中。

将红色文本复制到其他文档的另一种方法是绕过“查找和替换”并使用其他工具。请按照下列步骤操作:

。打开一个新文件。 (这是将红色文本复制到的文档。)

。切换回原始文档。

。将插入点放在红色文本内的某个位置。

。显示功能区的“主页”选项卡。

。在“编辑”组中,单击“选择”工具,然后选择“选择所有格式相似的文本”。 Word选择文档中所有类似格式的红色文本。

。按Ctrl + C。这会将所有文本复制到剪贴板。

。切换到新文档。

。按Ctrl + V。 Word将所有红色文本粘贴到新文档中。

如果您必须经常进行这种类型的编辑,则可能需要创建一个宏来为您完成任务。可以通过多种方式完成此操作,但是下面的内容足以说明这一概念。它为文档中所有红色文本创建一个变量数组,创建一个新文档,然后将变量数组的文本插入到新文档中。

Sub CopyRedTextToNewDoc()

Dim i As Integer     Dim a() As Variant     Dim sFound As String

Selection.Find.ClearFormatting     Selection.Find.Font.Color = wdColorRed     With Selection.Find         .Text = ""

.Replacement.Text = ""

.Forward = True         .Wrap = wdFindContinue         .Format = True         .MatchCase = False         .MatchWholeWord = False         .MatchWildcards = False         .MatchSoundsLike = False         .MatchAllWordForms = False     End With     Selection.Find.Execute

Do While Selection.Find.Found         ReDim Preserve a(i)

sFound = Selection

If Asc(Right(sFound, 1)) <> 13 Then             sFound = sFound & vbCrLf         End If

a(i) = sFound         i = i + 1         Selection.Find.Execute    Loop

Application.Documents.Add     For i = LBound(a) To UBound(a)

ActiveDocument.Range.InsertAfter a(i)

Next

' If you don't want the text in the new document to be red,     ' remove the following three lines or comment them out     Selection.WholeStory     Selection.Font.Color = wdColorRed     Selection.Collapse End Sub

注意:

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

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

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