如何重新应用/更新样式/字体到所有段落,但有些?

时间:2011-12-07 23:17:10

标签: vba ms-word word-vba

我有一个很长的Word文档,各个段落的字体非常多样化(文本没有衬线,字幕和标题衬线)。唯一且正确应用的唯一样式是标题和标题1到4.

有没有办法将常用字体应用于所有段落但字幕和标题不会丢失这些段落的粗体和斜体格式?我尝试重新应用这里描述的样式http://www.elharo.com/blog/word/2005/12/28/word-tip-1-reapplying-styles/,但这只适用于没有任何斜体或粗体格式(或http链接)的段落

我目前看到的方式,获得普通段落的一致字体和样式的唯一方法是a)通过单独对每个段落应用样式来删除所有格式,然后遍历每个段落并手动重新应用粗体/斜体/ http格式化到那些现在已被覆盖的部分。

有没有其他方法可以做到这一点?一定有,对吗? VBA?别的什么?

修改

类似以下内容(伪代码):

for i in all_paragraphs()
    if i.style not in [header1, header2, header3, caption, ...]
        i.font = my_new_font

这样任何标记都应保持不变。

1 个答案:

答案 0 :(得分:2)

使用VBA可以非常轻松地完成此任务,正如您所说:

    Sub changeStyles()
        Dim p As Paragraph

        For Each p In ActiveDocument.Paragraphs
            If p.Range.Style <> "Caption" _
            And p.Range.Style <> "Heading 1" _
            And p.Range.Style <> "Heading 2" _
            And p.Range.Style <> "Heading 3" _
            And p.Range.Style <> "Heading 4" _
            Then
                p.Range.Font.Name = "Arial"
            End If
        Next
    End Sub

此代码将应用您喜欢的任何样式到文档中的每个Paragraph对象,而该文档没有您提到的样式之一。 p.Range.Font有许多您认为有用的成员,例如BoldItalic,如果您还需要更改这些属性。