Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
同一段落中具有不同样式的文本Word VBA_Vba_Ms Word - Fatal编程技术网

同一段落中具有不同样式的文本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