1

既にフォーマットされているファイル (WinWord) のバッチがあり、どこでも論理的に一致するスタイルに同じ名前を使用したいと考えています。

VBA を介して多数の WinWord 2007 スタイルの名前を変更する方法はありますか、それとも手動でのみ行うことができますか?

私の質問について考える時間を割いていただきありがとうございます。マルセル

4

2 に答える 2

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
于 2016-03-20T20:14:51.490 に答える
0

NameLocal プロパティに書き込むことで、ユーザー定義スタイルの名前を変更できるはずです。例えば:

ActiveDocument.Styles(3).NameLocal = "abbracadabra"

Styles コレクションの 3 番目のスタイルの名前を「abbracadabra」に変更します。これをどのように自動化するかは、名前の変更にロジックがあるかどうかによって異なります。

これは組み込みのスタイル (見出し 1 など) では機能しないと思います。代わりに、エイリアス スタイルが得られます。Word 2010 では、「[古いスタイル名]、[新しいスタイル名]」のようになります。私はそれらについてあまり知りません。

たとえば、各スタイル名に「-changed」を追加する場合は、次のようにします。

For Each aStyle in ActiveDocument.Styles
    If aStyle.BuiltIn = False Then aStyle.NameLocal = aStyle.NameLocal & "-changed"
Next aStyle
于 2013-03-14T22:27:59.643 に答える