美好的一天,
我昨天在谷歌上搜索试图找到我的问题的答案,但找不到解决方案。也许我没有正确描述我的问题。
我正在尝试在名为“bmk_condition”的给定书签中插入特定文本。文本由条件编号、描述和截止日期(如果有)组成。如下图所示,我希望条件及其编号(例如条件 2)以粗体显示,而其余部分应为普通文本。
根据我在各个论坛上收集的信息,我需要设置 bookmark.range.font.bold 属性。但是,我的“条件..”文本仍未格式化。
这是我的代码示例(为简洁起见,省略了数据提取部分):
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 属性,文本并未显示为粗体。关于可能出现问题的任何见解或建议?
预先感谢您的帮助。
我在这里假设书签是一个 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”?