VBA清除所选段落的格式

时间:2013-06-23 00:12:55

标签: vba ms-office word-vba visual-studio-macros

这个宏有很多麻烦:

 ActiveDocument.CopyStylesFromTemplate NormalTemplate.FullName
    With Selection
        .Style = ActiveDocument.Styles("Normal")
        .Range.HighlightColorIndex = 0
        .Font.Shading.Texture = wdTextureNone
        .Font.Name = ActiveDocument.Styles("Normal").Font.Name
        .Font.Size = ActiveDocument.Styles("Normal").Font.Size
    End With

它与以下行完美配合: 此文字应格式为,不带粗体或斜体。

并将其转换为“ 此文本的格式应不带粗体或斜体。

但是,只有在最后一个字符之前选择并运行它时,它才有效。当我双击该行或手动选择整行并运行宏时,它似乎根本没有任何效果。

任何可能导致此问题的想法,或者我是否应该使用不同的方法删除选区中的粗体/斜体文本并将所有文本转换为普通样式/字体?

编辑:这可能与从键盘快捷键运行宏有关,因为它可以通过宏菜单手动运行时正常工作。

2 个答案:

答案 0 :(得分:3)

如果您想清除所有格式,我建议:

With Selection
    .ClearFormatting
End With

这会将段落样式重置为Normal并重置所有字体和属性(我试图设置)。请注意,它会重置包含选区的段落的段落样式(因此,如果您只选择了段落中的单个单词,它仍会重置段落的样式。)

参考:MSDN: Selection.ClearFormatting

当我添加ActiveDocument.CopyStylesFromTemplate NormalTemplate.FullName时,我没有看到任何差异,但我希望这取决于您的文档的复杂性。

答案 1 :(得分:0)

事实证明问题是我以前使用的模板的开发人员编写的文档很差 - 我只是编辑了错误的宏,因此尽管我没有显示任何内容,但是从有缺陷的宏获得了部分正确的结果。