【问题标题】:Can a character style be applied programmatically to a string before it is written to the Word document with VBA?在使用 VBA 将字符样式写入 Word 文档之前,能否以编程方式将字符样式应用于字符串?
【发布时间】:2018-10-15 14:17:49
【问题描述】:

我正在从 Excel 工作表中获取一些数据并将其填充到 Word 模板中。我希望我可以将文档的一些字符样式分配给子字符串,这些子字符串将随着字符串的建立而添加到文档中,而不是将字符串添加到文档中,然后单独选择每个字符串以应用适当的样式.

现在,我正在连接几个字符串并将它们添加到文档中的文本框中,如下所示:

ActiveDocument.Shapes("Text Box 7").TextFrame.TextRange.Text = str1 & " " & str2 & ", " & str3

这会循环运行并将其中几行打印到文档中。但是,我想在写入文档时为每一行的str1str2str3 分配/应用不同的字符样式。比如:

ActiveDocument.Shapes("Text Box 7").TextFrame.TextRange.Text =
    str1.applyStyle("charStyle1") & 
    " " & 
    str2.applyStyle("charStyle2") & 
    ", " &
    str3.applyStyle("charStyle3")

我意识到没有String.applyStyle() 方法,但是有什么可以做的接近这个功能或者字符串必须先写入文档然后加载到Range 对象然后然后设置了Style 属性吗?

【问题讨论】:

    标签: vba ms-word formatting string-formatting


    【解决方案1】:
    With ActiveDocument.Shapes("Text Box 7").TextFrame.TextRange
      .Style = "Style1"
      .Text = str1 & " "
      .Collapse wdCollapseEnd
      .Style = "Style2"
      .Text = str2 & ", "
      .Collapse wdCollapseEnd
      .Style = "Style3"
      .Text = str3
    End With
    

    【讨论】:

    • 是的,Collapse() 成功了。我不得不修改一件事......因为所有这些都是在循环中运行的,所以我必须确保在循环的第一次迭代之后对所有 3 个字符串(而不仅仅是最后一个 2 个)使用.Collapse wdCollapseEnd
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-15
    • 2014-05-02
    • 1970-01-01
    • 1970-01-01
    • 2013-07-31
    • 1970-01-01
    相关资源
    最近更新 更多