• ベストアンサー

ワードでスタイル名を取り出すマクロ

ワード2010で、今、カーソルがおいてあるところの段落のスタイル名をメッセージボックスで知りたいのですが、そのマクロの作り方を教えてください。 Sub スタイル名取得() Dim スタイル名 As Style スタイル名 = ActiveDocument.Styles MsgBox (スタイル名) End Sub とやってみたのですが、だめです。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

Sub hoge() Dim r As Range Dim x As Style Set r = Application.Selection.Range 'VB系は遅延バインディングをサポートするけど俺は気持ち悪いと感じるので型を利用する。 Set x = r.ParagraphStyle ' どうやら段落スタイルや文字スタイルが異なる複数の範囲にまたがって選択されていると ' それぞれNothingが代入されてしまうらしく、NameLocalプロパティを参照しようとした時エラーで止まる If Not (x Is Nothing) Then MsgBox (x.NameLocal) End If Set x = r.CharacterStyle If Not (x Is Nothing) Then MsgBox (x.NameLocal) End If End Sub

kiki2926
質問者

お礼

ありがとうございました。すごくびっくりしています。しかし、まだわからないことがあるのです。 Sub hoge2() Dim r As Range Dim x As Style Set r = Application.Selection.Range Set x = r.CharacterStyle If Not (x Is Nothing) Then MsgBox (x.NameLocal) End If Set x = r.ParagraphStyle If Not (x Is Nothing) Then MsgBox (x.NameLocal) End If If x.NameLocal = "見出し1" Then MsgBox (x.NameLocal) End If とやってみました。すると、見出し1のときに最後のif文を実行してくれないのです。多分初歩的なことなのだろうと思いますが、よろしくご指導願います。