我有几本格式不正确的书,其中包括问题和答案。
我的工作是让所有的问题大写且粗体。我正在使用 MS Word 来维护已经正确格式化的部分,因此将其移动到 Notepad++(例如)并返回不是一个选择。
我能想到的唯一可行的解决方案是使用通配符查找“?”之前的所有单词,而之后不查找任何单词,然后使用 MS Word 的替换工具中已有的格式选项替换它们。
那么,有人知道怎么做吗?
如何使用正则表达式/通配符查找问题(“?”之前的单词)?
答案1
这是一个可以满足您的要求的宏。该宏假设您的问题位于其自己的段落中。如果它们可能散布在一个段落中,您可以使用 while 循环继续逐个字符扩展选择,直到找到大写字母,而不是扩展到整个段落。
Sub FormatQuestions() 'Finds everything that starts with a capital letter and ends with a question mark. Bolds it and puts it in all caps. 'Variable definitions Dim intTotalChars As Integer Dim intLoop As Integer Dim strTestChar As String Dim rngQuestionRange As Range Dim intCountQuestionMarks As Integer intTotalChars = ActiveDocument.Characters.Count For intLoop = 1 To intTotalChars strTestChar = ActiveDocument.Characters.Item(intLoop).Text If strTestChar = "?" Then intCountQuestionMarks = intCountQuestionMarks + 1 ActiveDocument.Characters.Item(intLoop).Select Selection.Expand wdParagraph Selection.Font.Bold = True Selection.Font.AllCaps = True End If Next intLoop End Sub
在此答案的先前版本中,我错误地指出 Word 不允许您同时搜索段落标记和通配符。实际上可以,但您需要对段落使用 ^13 而不是 ^p。(Microsoft 的此页面列出了可用于通配符搜索的特殊字符:http://support.microsoft.com/kb/176776)