Home » ワードマクロ・Word VBAの使い方 » スタイル » 同じスタイルの場合は段落間にスペースを追加しないのOn/Offを切り替えるWordマクロ

同じスタイルの場合は段落間にスペースを追加しないのOn/Offを切り替えるWordマクロ

対象:Word2007, Word2010, Word2013

「word vba 同じスタイルの場合は段落間にスペースを追加しない」
という検索で、このサイト・インストラクターのネタ帳へのアクセスがありました。

Wordの[段落]ダイアログ-[インデントと行間隔]タブに、[同じスタイルの場合は段落間にスペースを追加しない]という設定項目があります。
同じスタイルの場合は段落間にスペースを追加しないチェックボックスを切り替えるWordマクロ

これを操作するVBA(Visual Basic for Applications)のコードを探している方による検索です。

とりあえず、マクロ記録してみましたが、それらしきプロパティが見つかりません。

[スポンサードリンク]

Style.NoSpaceBetweenParagraphsOfSameStyleプロパティ

オブジェクトブラウザーで、いろいろなキーワードを検索してみると、NoSpaceBetweenParagraphsOfSameStyleという関係しそうなプロパティが見つかります。

同じスタイルの場合は段落間にスペースを追加しないチェックボックスを切り替えるWordマクロ

しかしこのNoSpaceBetweenParagraphsOfSameStyleプロパティは、Styleオブジェクトのプロパティで、例えば、
 With Selection.ParagraphFormat.Style
  .NoSpaceBetweenParagraphsOfSameStyle _  
= Not .NoSpaceBetweenParagraphsOfSameStyle
 End With
というコードを実行しても、そのスタイルの[同じスタイルの場合は段落間にスペースを追加しない]は変更されますが、[段落]ダイアログの[同じスタイルの場合は段落間にスペースを追加しない]は変更できません。残念ながら。

NoSpaceBetweenParagraphsOfSameStyleは、Styleオブジェクトのプロパティだから、当然の結果です。

同じスタイルの場合は段落間にスペースを追加しない設定を切り替えるサンプルマクロ

英語圏の情報を検索してみてみると、MSDN(Microsoft Developer Network)フォーラムの中に、
How to set NoSpaceBetweenParagraphsOfSameStyle in a range
という質問が上がっていることに気づきました。

ここで紹介されているコードを使わせていただき、以下のようなマクロにすると、[段落]ダイアログ-[インデントと行間隔]タブの、[同じスタイルの場合は段落間にスペースを追加しない]チェックボックスのOn・Offを切り替えることができます。

Sub 同じスタイルの場合は段落間にスペースを追加しない設定を切り替える()

 With Dialogs(wdDialogFormatParagraph)
 If .NoSpaceBetweenParagraphsOfSameStyle = 0 Then
  .NoSpaceBetweenParagraphsOfSameStyle = 1
 Else
  .NoSpaceBetweenParagraphsOfSameStyle = 0
 End If
 .Execute
 End With

End Sub

Dialogsプロパティの引数、

同じスタイルの場合は段落間にスペースを追加しないチェックボックスを切り替えるWordマクロ

すなわち、Dialogsコレクションオブジェクトのデフォルトプロパティの引数に、

同じスタイルの場合は段落間にスペースを追加しないチェックボックスを切り替えるWordマクロ

定数・wdDialogFormatParagraphを指定して、

同じスタイルの場合は段落間にスペースを追加しないチェックボックスを切り替えるWordマクロ

[段落]ダイアログを取得して、
 With Dialogs(wdDialogFormatParagraph)

NoSpaceBetweenParagraphsOfSameStyleを切り替え、
 If .NoSpaceBetweenParagraphsOfSameStyle = 0 Then
  .NoSpaceBetweenParagraphsOfSameStyle = 1
 Else
  .NoSpaceBetweenParagraphsOfSameStyle = 0
 End If

DialogオブジェクトのExecuteメソッドを実行するというコードです。
 .Execute

同じスタイルの場合は段落間にスペースを追加しないチェックボックスを切り替えるWordマクロ

NoSpaceBetweenParagraphsOfSameStyleの値を切り替える処理は、Not演算子を使った
 .NoSpaceBetweenParagraphsOfSameStyle = _
 Not .NoSpaceBetweenParagraphsOfSameStyle
というコードで切り替わるのか試してみましたが、ダメなので、If文を使ったコードにしています。

[スポンサードリンク]

Home » ワードマクロ・Word VBAの使い方 » スタイル » 同じスタイルの場合は段落間にスペースを追加しないのOn/Offを切り替えるWordマクロ

Copyright © インストラクターのネタ帳 All Rights Reserved.

.