第8話――「ワードで正規表現置換もどき(ワイルドカード)を実現する」

―――――――――――――――――

ワードで次の形の置換を行い、マクロを用いて振り仮名表記を実現する


周恩来(ジョウ・エンライ)

―――――――――――――――――

🟦『徒然なる日常生活』第二章第8話(青空文庫形式・カクヨム形式その①)

▶️https://kakuyomu.jp/users/happy-isl/news/822139842600345772

―――――――――――――――――


wzエディターの正規表現置換を使えば、この形「周恩来(ジョウ・エンライ)」の文字を青空文庫形式・カクヨム形式に直すことが出来ます。方法も書いておきましょう。


―――――――――――――――――

正規表現検索


([一-鿿]+)(([^)]*))


正規表現置換


―――――――――――――――――

🟦『徒然なる日常生活』第二章第8話(青空文庫形式・カクヨム形式その②)

▶️https://kakuyomu.jp/users/happy-isl/news/822139842600669299

―――――――――――――――――

―――――――――――――――――


ワードでは正規表現が使えるのか?


残念ながら、ワードでは正規表現が使えません。その代わりにワイルドカードが使えます。


 手順は次のとおりです。


 1) Ctrl+H(検索と置換)を開く。

 2) 「詳細設定」を開き、「ワイルドカードを使用する」にチェックを入れる。

 3) 次を設定して「すべて置換」。


―――――――――――――――――

 検索する文字列(Find what)

 ([一-龯]@)(([!)]@))


 置換後の文字列(Replace with)


―――――――――――――――――

🟦『徒然なる日常生活』第二章第8話(青空文庫形式・カクヨム形式その③)

▶️https://kakuyomu.jp/users/happy-isl/news/822139842600905849

―――――――――――――――――


―――――――――――――――――


この方法で、ワード文書の振り仮名を打ちたい箇所がこの形(青空文庫形式・カクヨム形式)になります。


―――――――――――――――――

🟦『徒然なる日常生活』第二章第8話(青空文庫形式・カクヨム形式その①)

▶️https://kakuyomu.jp/users/happy-isl/news/822139842600345772

―――――――――――――――――


この形になれば、『徒然なる日常生活』で僕が作ったマクロ(下に書いときます)を実行すればよいのです。


―――――――――――――――――

Option Explicit


Sub AozoraRubyToWordRuby()

' 青空文庫形式:親文字ルビ を、Wordのルビ(PhoneticGuide)に変換する

' ルビ書式:游明朝 10pt を指定(必要なら下の定数を変更)


Const RUBY_FONT_NAME As String = "游明朝"

Const RUBY_FONT_SIZE As Single = 10

Const RUBY_RAISE As Long = 0 ' 上下位置。必要なら 1~2 程度で微調整


Dim rngSearch As Range

Set rngSearch = ActiveDocument.Content


With rngSearch.Find

.ClearFormatting

.Replacement.ClearFormatting

.MatchWildcards = True

.Text = "(*)(*)"

.Replacement.Text = ""

.Wrap = wdFindStop

.Forward = True

.Format = False

End With


Do While rngSearch.Find.Execute = True


Dim matchString As String

matchString = rngSearch.Text


Dim posOpen As Long, posClose As Long

posOpen = InStr(matchString, "《")

posClose = InStr(matchString, "》")


If posOpen <= 2 Or posClose <= posOpen Then

rngSearch.Collapse Direction:=wdCollapseEnd

GoTo ContinueLoop

End If


Dim parentText As String, rubyText As String

parentText = Mid$(matchString, 2, posOpen - 2)

rubyText = Mid$(matchString, posOpen + 1, posClose - (posOpen + 1))


' 念のため空を弾く

If Len(parentText) = 0 Or Len(rubyText) = 0 Then

rngSearch.Collapse Direction:=wdCollapseEnd

GoTo ContinueLoop

End If


' 親文字に置換

rngSearch.Text = parentText


' ルビを付与(ルビ側のフォント/サイズを指定)

rngSearch.PhoneticGuide rubyText, _

wdPhoneticGuideAlignmentCenter, _

RUBY_RAISE, _

RUBY_FONT_SIZE, _

RUBY_FONT_NAME


' 次の検索へ(いま置換した箇所の末尾に移動)

rngSearch.Collapse Direction:=wdCollapseEnd


ContinueLoop:

Loop

End Sub


―――――――――――――――――


これじゃ駄目でした。青空形式の部分がふりがな付きの文字になってしまったので、下の近況ノートで何とかコピーして下さい。


―――――――――――――――――

『徒然なる日常生活』ワード用マクロ

▶️https://kakuyomu.jp/users/happy-isl/news/822139842613934268

―――――――――――――――――

  • Xで共有
  • Facebookで共有
  • はてなブックマークでブックマーク

作者を応援しよう!

ハートをクリックで、簡単に応援の気持ちを伝えられます。(ログインが必要です)

応援したユーザー

応援すると応援コメントも書けます

新規登録で充実の読書を

マイページ
読書の状況から作品を自動で分類して簡単に管理できる
小説の未読話数がひと目でわかり前回の続きから読める
フォローしたユーザーの活動を追える
通知
小説の更新や作者の新作の情報を受け取れる
閲覧履歴
以前読んだ小説が一覧で見つけやすい
新規ユーザー登録無料

アカウントをお持ちの方はログイン

カクヨムで可能な読書体験をくわしく知る