我有一批已經格式化的文件(WinWord),並且我想使用相同的名稱來在任何地方進行邏輯上匹配的樣式。使用VBA重命名Word樣式
是否有任何方法通過VBA重命名許多WinWord 2007樣式,或者只能手動完成此操作?
感謝您花時間思考我的問題。 Marcel
我有一批已經格式化的文件(WinWord),並且我想使用相同的名稱來在任何地方進行邏輯上匹配的樣式。使用VBA重命名Word樣式
是否有任何方法通過VBA重命名許多WinWord 2007樣式,或者只能手動完成此操作?
感謝您花時間思考我的問題。 Marcel
您應該可以通過寫入其NameLocal屬性來更改用戶定義樣式的名稱。例如:
ActiveDocument.Styles(3).NameLocal = "abbracadabra"
將Styles集合中第三個樣式的名稱更改爲「abbracadabra」。具體如何自動化這取決於名稱更改是否存在邏輯。
我不認爲這將適用於內置樣式(如標題1);相反,你會得到別名風格。在Word 2010中,最終看起來像「[舊風格名稱],[新風格名稱]」。我對這些並不瞭解。
所以,如果你想,例如,添加「-changed」每一個風格的名字,你可以做到以下幾點:
For Each aStyle in ActiveDocument.Styles
If aStyle.BuiltIn = False Then aStyle.NameLocal = aStyle.NameLocal & "-changed"
Next aStyle
有關於如何重命名鏈接風格的重要注意事項。當通過樣式本身的NameLocal
重命名樣式時,我意外地發現了這個技巧:重命名也改變了樣式的字符格式。對於鏈接的樣式,應使用重命名樣式的LinkStyle
的NameLocal
。這是一個完整的函數來重命名這兩種類型的樣式。 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
非常感謝,克里斯蒂娜:-) 實際上,你可以在「重命名」內置樣式相同的方式。正如您已經指出的那樣,內置名稱將保留並且正在添加別名。 如果您不知道樣式在樣式集合中的位置,您可以編寫: 'ActiveDocument.Styles(「Original Style Name」)。NameLocal =「New Style Name」 – Marcel 2013-03-19 17:57:17