Markdown記法というものがあります。

Markdown記法
Markdown記法というのがあるそうです。主なルールは次の通り。 見出しは、左端に「#」を付ける。 段落は、一行あける。 改行は、右端に半角スペースを2個付ける。 順序なしリストは、左端に「*」を付ける。 順序ありリストは、左端に「1.」...
その中に「#見出し1」のように行頭に「#」を付けた行は見出しとする、という記法があります。
「#」の数に応じて見出しのレベルが変わります。
このようにMarkdown記法に従って見出しを付けた文章に対してWord上の見出しをセットするというマクロを作ってみました。
Sub 見出し設定()
Set ps = ActiveDocument.Paragraphs
For x = 1 To ps.Count
a = ps(x)
If Left(a, 1) = "#" Then
For i = 6 To 1 Step -1
If Left(a, i) = String(i, "#") Then
ps(x).Range.Text = Right(a, Len(a) - i)
ps(x).Range.Style = ActiveDocument.Styles("見出し " & i)
Exit For
End If
Next i
End If
Next x
End Sub
Set ps = ActiveDocument.Paragraphs
For x = 1 To ps.Count
a = ps(x)
If Left(a, 1) = "#" Then
For i = 6 To 1 Step -1
If Left(a, i) = String(i, "#") Then
ps(x).Range.Text = Right(a, Len(a) - i)
ps(x).Range.Style = ActiveDocument.Styles("見出し " & i)
Exit For
End If
Next i
End If
Next x
End Sub
このような処理は、普通は置換を使うことで簡単にできるのですが、Wordの検索・置換では「行頭」を認識する方法がありません。
そこでマクロを使い、1行ごとに処理を行っています。
行頭に「#」があれば、それが6個あるケースから1個あるケースまで順に処理します。行頭の「#」を削除し、個数に応じて見出しをセットします。
コメント
お世話になっております。
私は、VBAアセットというサイトを開設しています。
「アウトライン設定」というマクロを作成し、その機能などを紹介するにあたって、この記事を参考にさせていただきました。
https://vba-assets.net/outline/
すばらしいアイデアを公表していただき、大変ありがとうございます。
今後とも、よろしくお願いいたします。
影本さん
お役に立てたのであれば嬉しいです。
また機会があればよろしくお願いします。
[…] 行頭の#の数に応じて見出し… […]