无法使用VBA更改Word中的样式

无法使用VBA更改Word中的样式,vba,ms-word,Vba,Ms Word,我有这样一段话: 2014年11月19日-您正在对所选内容进行搜索,但您 不在运行之间更改该选择。所以你就这样结束了 同样的文本一次又一次加粗。这里有一个方法来做你想做的事 不使用选择对象执行:Sub ParaStyle()Dim objPara As 每个objPara中的段落。。。文字VBA段落 格式化VBF论坛 我想把整段的风格改成本地风格。我正在使用以下代码: Dim rgePages As Range Dim p As Paragraph Selection.GoTo What:=w

我有这样一段话:

2014年11月19日-您正在对所选内容进行搜索,但您 不在运行之间更改该选择。所以你就这样结束了 同样的文本一次又一次加粗。这里有一个方法来做你想做的事 不使用选择对象执行:Sub ParaStyle()Dim objPara As 每个objPara中的段落。。。文字VBA段落 格式化VBF论坛

我想把整段的风格改成本地风格。我正在使用以下代码:

Dim rgePages As Range
Dim p As Paragraph

Selection.GoTo What:=wdGoToPage, Which:=wdGoToAbsolute, Count:=3
Set rgePages = Selection.Range
Selection.GoTo What:=wdGoToPage, Which:=wdGoToAbsolute, Count:=6
rgePages.End = Selection.Bookmarks("\Page").Range.End
rgePages.Select

For Each p In rgePages.Paragraphs
If p.Style <> "Heading 1" Then

p.Style = "Body Text"
'p.Style = Word.WdBuiltinStyle.wdStyleBodyText
rgePages.Collapse Word.WdCollapseDirection.wdCollapseEnd

End If
Next
将页面设置为范围
将p标注为段落
Selection.GoTo What:=wdGoToPage,Which:=wdGoToAbsolute,Count:=3
Set=Selection.Range
Selection.GoTo What:=wdGoToPage,Which:=wdGoToAbsolute,Count:=6
rgePages.End=Selection.Bookmarks(“\Page”).Range.End
打开页面。选择
每一页中的p。段落
如果p.样式为“标题1”,则
p、 Style=“正文”
'p.Style=Word.WdBuiltinStyle.wdStyleBodyText
rgePages.collapseDirection.wdCollapseEnd折叠Word.WdCollapseDirection.wdCollapseEnd
如果结束
下一个
直到任何一行或几句话都有不同的风格为止,它都可以正常工作。例如,如果该行

所以你就这样结束了


在不同风格的段落中,除该部分外,它将整个段落标记为“正文”。有解决方法吗?

在应用自己的样式之前,可以先尝试清除格式设置。可以这样做:

....
If p.Style <> "Heading 1" Then

    p.Range.Select 
    Selection.ClearFormatting 'it rather works with selection only

p.Style = "Body Text"
....
。。。。
如果p.样式为“标题1”,则
p、 范围。选择
Selection.ClearFormatting“它只适用于选择
p、 Style=“正文”
....

这太有帮助了!我已经试了好几个小时了,现在正在尝试搜索网络。非常感谢你。