Word 的 VBA:我想在给定书签处将一个单词格式化为粗体

问题描述 投票:0回答:1

美好的一天,

我昨天在谷歌上搜索试图找到我的问题的答案,但找不到解决方案。也许我没有正确描述我的问题。

我正在尝试在名为“bmk_condition”的给定书签中插入特定文本。文本由条件编号、描述和截止日期(如果有)组成。如下图所示,我希望条件及其编号(例如条件 2)以粗体显示,而其余部分应为普通文本。

根据我在各个论坛上收集的信息,我需要设置 bookmark.range.font.bold 属性。但是,我的“条件..”文本仍未格式化。

enter image description here

这是我的代码示例(为简洁起见,省略了数据提取部分):

Dim wdApp As Word.Application
Dim wdDoc As Word.Document
Dim wdBmk As Word.Bookmark

Set wdApp = GetObject(, "Word.Application")

Set wdDoc = wdApp.Documents.Add("template.dotx", False, 0)

wdApp.Visible = True

wdDoc.Activate

Set wdBmk = pWdDoc.Bookmarks("bmk_condition")

wdBmk.Range.Collapse Direction:=wdCollapseStart

'Insert condition #2
wdBmk.Range.Font.Bold = False
wdBmk.Range.Text = "Lorem Ipusm" & vbCrLf & "Deadline: xxxxxx"
wdBmk.Range.Font.Bold = True
wdBmk.Range.Text = "Condition 2"

'Insert condition #1
wdBmk.Range.Font.Bold = False
wdBmk.Range.Text = "Lorem Ipsum"
wdBmk.Range.Font.Bold = True
wdBmk.Range.Text = "Condition 1"

尽管设置了 font.bold 属性,文本并未显示为粗体。关于可能出现问题的任何见解或建议?

预先感谢您的帮助。

vba ms-word bookmarks
1个回答
0
投票

我在这里假设书签是一个 0 字符长度的“插入点”(我认为它是基于您的文档图片)。

您的核心问题是,当您执行

wdBmk.Range.Font.Bold = True
(或 False)时,您的代码将作用于书签的 0 字符长度位置......而不是作用于您添加的文本。您可以按如下方式修复此问题:

添加此子:

Sub AddTextToBookmark(doc As Word.Document, wdBmk As Word.Bookmark, sText As String, bBold As Boolean)
    Dim rng As Word.Range
    wdBmk.Range.Text = sText & vbCrLf
    Set rng = doc.Range(wdBmk.Start, wdBmk.Start + Len(sText))
    rng.Font.Bold = bBold
End Sub

'AddTextToBookmark()' 的核心是“添加文本”和“加粗”。现在要使用它,请删除

Set wdBmk = pWdDoc.Bookmarks("bmk_condition")
行后面的所有现有代码,然后添加:

AddTextToBookmark wdDoc, wdBmk, "Lorem Ipusm" & vbCrLf & "Deadline: xxxxxx", False
AddTextToBookmark wdDoc, wdBmk, "Condition 2", True
AddTextToBookmark wdDoc, wdBmk, "Lorem Ipsum" & vbCrLf, False
AddTextToBookmark wdDoc, wdBmk, "Condition 1", True

我认为,您在问题中发布的代码中也有一个拼写错误...(

pWdDoc
而不是
wdDoc
)...您是否使用“Option Explicit”?

© www.soinside.com 2019 - 2024. All rights reserved.