詹妮弗(Jennifer)需要一种在宏中查找被智能引号或直引号(或两者混合)包围的字符串的方法。她似乎找不到用于Find方法的命令的适当组合,以在所有版本的Word中查找此类文本的所有实例。

重要的是要清楚要搜索的内容。本文中的假设是您的宏要求您搜索用引号引起来的_specific_字符串,而不是用引号引起来的_any_字符串。例如,在包含两个带引号的字符串(例如“我带引号的文本”和“更多带引号的文本”)的文档中,您只想提前找到一个您知道该文本的字符串之一,而不是两个字符串。

如您所述,在这种情况下,可以使用Find方法。问题是如何在您要查找的内容中同时包含智能引号和直引号。幸运的是,默认情况下,Find方法可将直引号和智能引号互换使用。关键是要知道如何指定要在搜索中包含引号。下面的代码段应该可以解决问题:

Selection.Find.ClearFormatting Selection.Find.Replacement.ClearFormatting With Selection.Find     .Text = """my quoted text"""

.Format = False     .MatchWildcards = False End With Selection.Find.Execute

此代码中的关键是如何将信息分配给.Text属性。请注意,无论您要搜索的内容(在本例中为“我引用的文字”)两边都用三个引号引起来。原因很神秘:要搜索的字符串必须用引号引起来;这是VBA要求的。如下所示:

"my quoted text"

由于您要在查找内容的开头使用实际的引号字符,因此需要在第二个引号中包含一个“定界符”,以表示您要查找引号字符。这意味着现在开头有三个引号:

"""my quoted text"

相同的额外引号标记分隔符技术也适用于字符串的末尾,因此最终得到的是代码片段中显示的内容。

执行代码后,Word会根据需要忠实地找到字符串,并在字符串中包含任何直接或智能引号的组合。

还应注意,仅当您将.MatchWildcards属性设置为False进行常规搜索时,此方法才有效。

注意:

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

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

(Microsoft Word是世界上最流行的文字处理软件。)此技巧(11639)适用于Microsoft Word 2007、2010、2013、2016、2019和Office 365中的Word。您可以找到此技巧的一个版本Word的旧菜单界面在这里: