首页 > 解决方案 > 如何在 Word VBA 中搜索文本、选择它所在的行并加粗?

问题描述

我创建了一个 word VBA 系统,它从 excel 电子表格中获取信息并创建一个 word 文档。每次的文档都是一份工作提案,因此通常至少有 1 行,通常是多行有小计:

小计 $1,000.00

我想编写一段代码(以适合按钮),在文档中找到“Sub-Total”,选择整行并将其设为粗体。它将始终位于 1 行,并且该行将始终以“Sub-Total”开头。

我尝试查找文本,但美元金额会随着任何新数据的导入而变化;只有“小计”这个词本身是静态的。任何帮助表示赞赏。谢谢!

标签: vbabuttonms-wordbold

解决方案


请注意,最好的做法是包含一个最小的、可行的代码示例,该示例显示了您在询问 stackoverflow 问题时所尝试的内容。

第一个问题是,如果您从 Excel 生成 Word 文档,为什么不在创建 Word 文档时格式化“小计”行(?);它可能比之后尝试查找和格式化文本更容易。

但是,假设由于某种原因你不能,这里有一个工作示例,它打开一个 Word 文档,循环遍历所有句子,检查句子是否以“Sub-Total”开头,如果是,则将其设为粗体。它假定文本(例如“Sub-Total $1500.00”)是一个完整的句子,整个句子需要加粗。

Option Explicit

Public Sub FindAndBold()

    Dim WordApp As Word.Application
    Dim MyWordDocument As Word.Document
    Dim Counter As Long
    
    Set WordApp = New Word.Application
    Set MyWordDocument = Word.Application.Documents.Open("C:\test.docx")
    For Counter = 1 To MyWordDocument.Sentences.Count
        With MyWordDocument.Sentences(Counter)
            If Left$(.Text, 11) = "Sub-Total: " Then
                .Bold = True
            End If
        End With
    Next
    
End Sub

推荐阅读