同一段落中具有不同样式的文本Word VBA
我希望在一行中有粗体和非粗体文本同一段落中具有不同样式的文本Word VBA,vba,ms-word,Vba,Ms Word,我希望在一行中有粗体和非粗体文本 带有objWrdDoc .Styles.Add(“S2”) .Styles.Add(“S3”) .style(“S2”).Font.Bold=True .style(“S3”).Font.Bold=False 以 使用objWrdApp.Selection .打字段落 .Style=objWrdDoc.Style(“S2”) .TypeText:=“我想要加粗” .Style=objWrdDoc.Style(“S3”) .TypeText文本:=“而不是一行中的
带有objWrdDoc
.Styles.Add(“S2”)
.Styles.Add(“S3”)
.style(“S2”).Font.Bold=True
.style(“S3”).Font.Bold=False
以
使用objWrdApp.Selection
.打字段落
.Style=objWrdDoc.Style(“S2”)
.TypeText:=“我想要加粗”
.Style=objWrdDoc.Style(“S3”)
.TypeText文本:=“而不是一行中的粗体文本。”
以
因此,整个文本不是粗体。使用
选择对象时感觉“直观”,编写代码来操作单词不如使用范围对象准确。您可以将范围
视为一个不可见的选择,其重要区别在于
- 代码可以处理多个
范围对象
- 用户不能影响
范围
的位置(单击屏幕或按箭头键更改选择
)
- 跟踪
范围
位于代码中的任何给定点是可靠的
将问题中的代码更改为“目标”范围
可以如下所示
(注意,我还为定义的样式添加了Style
对象。使用对象比使用objWrdDoc.styles(“S3”)
这样的结构更可靠,输入更少)
调用.Style=objWrdDoc.Style(“S3”)
时,您正在将其应用于整个选择,包括输入的第一个文本。@jsheeran如何避免此情况?脚本已执行,但所有文本均不加粗。所有文本均不应加粗,只有第一部分@aspire89@aspire89您打算继续吗?我使用Microsoft Word 2013(15.0.5163.1000)MSO(15.0.5172.1000)!
Dim S2 as Word.Style, S3 as Word.Style 'As Object if using late-binding
With objWrdDoc
Set S2 = .Styles.Add("S2")
Set S3 = .Styles.Add("S3")
S2.Font.Bold = True
S3.Font.Bold = False
End With
Dim objRange as Word.Range 'As Object if using late-binding
Set objRange = objWrdApp.Selection.Range
With objRange
.Text = vbCr 'Chr(13) = paragraph mark
'The new text should follow the inserted paragraph mark
'Like pressing right-arrow to "collapse" a selection
.Collapse wdCollapseEnd
'When working with ranges, apply the formatting after writing the text
.Text = "I want to have bold "
.Style = S2
.Collapse wdCollapseEnd
.Text = "and not bold text in one line."
.Style = S3
End With