【发布时间】:2016-01-10 02:18:18
【问题描述】:
这里有很多问题询问如何获取所有标题,但显然没有人尝试更改标题...
我想将一些二级标题从 Old Heading 更改为 New Heading,所以我这样做了...
Sub changeHeading()
Dim p As Paragraph
For Each p In ActiveDocument.Paragraphs
If p.Style = "Heading 2" Then _
If p.Range.Text = "Old Heading" & vbCr Then p.Range.Text = "New Heading" & vbCr
Next p
End Sub
标题获得了新名称,但它们也获得了不同的样式 - 它们获得下一段的样式 - 即,如果标题后面的文本具有样式 表格文本,则标题将具有样式表格文本之后(字体大小将保持旧标题的大小),章节编号丢失。如果我将样式设置回p.Style = "Heading 2",这将使该标题(即下一段)之后的第一个文本具有Heading 2 样式,尽管它仍然是同一段p(更改了文本,但在文件)。
之前的情况:
1.4 Old Heading
some text
更改标题并设置样式后
New Heading
1.4 some text
其中some text 的样式为Heading 2,New Heading 的字体大小与标题相同,但没有编号。
第二个问题,它花费了令人难以置信的时间(对于只有几段的小文档来说需要几秒钟)。
那么,如何更改标题?以及如何以一种不需要几分钟处理大文件的方式来做到这一点?感谢您的帮助。
编辑:
我发现用
改变文字Call p.Range.Find.Execute(FindText:="Old Heading", ReplaceWith:="New Heading")
将保留样式,因此这将解决我最初更改文本的问题,但我仍然想知道为什么设置段落文本会使其失去样式。
【问题讨论】: