Vba 将MS Word文档中每个句子的第一个字母加粗

Vba 将MS Word文档中每个句子的第一个字母加粗,vba,ms-word,Vba,Ms Word,在MS Word文档中,我想将每个句子的第一个字母加粗。实现这一点的好方法是什么?这可以通过Word内置的高级查找+替换来实现。您需要指定一个通配符匹配表达式(如此表达式),以选择句子分隔符和空格后的第一个字符: [\.\?\!] ? 您可以指定在同一UI中找到的每个字符的样式设置方式(严格来说不是查找/替换-您可以查找/样式)。请注意,上面的表达式将使每个句子的第一个字符和前面的?/!/。大胆的您可以通过只搜索标点符号并取消其粗体来更正此问题 请参阅本指南: 我知道,不是很有程序性,但比深入

在MS Word文档中,我想将每个句子的第一个字母加粗。实现这一点的好方法是什么?

这可以通过Word内置的高级查找+替换来实现。您需要指定一个通配符匹配表达式(如此表达式),以选择句子分隔符和空格后的第一个字符:

[\.\?\!] ?
您可以指定在同一UI中找到的每个字符的样式设置方式(严格来说不是查找/替换-您可以查找/样式)。请注意,上面的表达式将使每个句子的第一个字符和前面的?/!/。大胆的您可以通过只搜索标点符号并取消其粗体来更正此问题

请参阅本指南:


我知道,不是很有程序性,但比深入研究VBA要快得多。

在VBA方面相当直接

Sub BoldFirstLetterInSentence()
Dim ad As Document
Set ad = ActiveDocument
Dim sen As Range
For Each sen In ad.Sentences
    sen.Words.First.Characters.First.Font.Bold = True
    /* sen.Words(1).Characters(1).Font.Bold = True also works */
Next
End Sub

以下是我的作品

Option Explicit

Public Sub SetFirstLetterBold()
    Dim i As Integer
    Dim doc As Document
    Set doc = ActiveDocument

    For i = 1 To doc.Sentences.Count
        doc.Sentences(i).Characters(1).Bold = True
    Next
End Sub

请记住,句子分割不是一个容易解决的问题。它需要考虑缩略语和一些有点不合常规的互戳,例如在TeHbRunx回答中:“注意上面的表达式将使每一个句子的第一个字符和前面的/ / /粗体字都成为”你会在哪里自动检测到这个边界?“粗体”这个词是不是开始了一个新句子?你介意告诉我,当我打开
选项exlicit
时,为什么这个代码不起作用吗?这是因为
For Each
循环中的
sen
没有定义,而
选项Explicit
需要定义所有变量。它是一个
范围
对象,因此您只需在
设置广告下方添加
Dim sen As Range
。我已经更新了代码以反映这一点。