我有一批已经格式化的文件(WinWord),我希望在所有地方使用相同的名称来匹配样式。
有没有办法通过VBA重命名多个WinWord 2007样式,还是只能手动完成?
感谢您花时间思考我的问题。 烫发
答案 0 :(得分:1)
有关如何重命名链接样式的重要说明。通过样式本身的NameLocal
重命名样式时,我偶然发现了这个技巧:重命名也改变了样式的字符格式。对于链接样式,应使用正在重命名的样式的NameLocal
LinkStyle
。这是一个完整的函数来重命名两种类型的样式。 Debug
用于查看已重命名的样式和方式。
Function rename_style(ByVal p_Styles As Styles, ByVal From_n As String, ByVal to_n As String) As Boolean
Dim v_Style As Style
On Error Resume Next
Set v_Style = p_Styles(From_n)
If Not v_Style Is Nothing Then
If v_Style.Linked Then
v_Style.LinkStyle.NameLocal = to_n
Else
v_Style.NameLocal = to_n
End If
Set v_Style = p_Styles(From_n)
'Accessing through p_Styles to avoid the use of the localized name
If v_Style Is Nothing Then
Debug.Print From_n; " -> "; to_n; " failed"
rename_style = False
Else
Debug.Print From_n; " -> "; to_n
rename_style = True
End If
Else
rename_style = False
Debug.Print From_n; " skipped"
End If
End Function
答案 1 :(得分:0)
您应该能够通过写入NameLocal属性来更改用户定义样式的名称。例如:
ActiveDocument.Styles(3).NameLocal = "abbracadabra"
将样式集合中第三个样式的名称更改为“abbracadabra”。具体如何自动执行此操作取决于名称更改是否存在逻辑。
我不认为这适用于内置样式(如标题1);相反,你得到一个别名的风格。在Word 2010中,最终看起来像“[旧样式名称],[新样式名称]”。我不太了解这些。
所以,例如,如果您想要为每个样式名称添加“-changed”,您可以执行以下操作:
For Each aStyle in ActiveDocument.Styles
If aStyle.BuiltIn = False Then aStyle.NameLocal = aStyle.NameLocal & "-changed"
Next aStyle