第2話 ルビ振りラクチン。登録したキーワードで、自動ルビ振りマクロ。
VBAを勉強しようと思ったけど、怠すぎる。
AIに作らせればオッケイ。
copilotでこんな感じに訊いてみた、『wordのvbaでカーソルよりの前の単語が「試験」なら「│試験 《しけん》」のように置換。「テスト」なら「│テスト 《つらい》」のように置換。このふたつでなければ、単語の前に「│」を挿入、単語の後に「《》」を挿入するソースコードを示せ。』。
このエピソードはルビ振りの縦棒を罫線で書いてます。
こうしないと表示されません。
それと『《』の前に半角スペース入れてます。
こうしないとカクヨムで表示されません。
copilotに打ち込むなら、手直しするか、置換して下さい。
結果はこれ。
これは見せるためのコードです。
Sub ReplaceWordWithRuby()
Dim sel As Range
Set sel = Selection.Range
' カーソルの前の単語を取得
Dim wordRange As Range
Set wordRange = sel.Duplicate
wordRange.MoveStartUntil " ", wdBackward
wordRange.MoveStart wdWord, -1
Dim targetWord As String
targetWord = Trim(wordRange.Text)
Dim rubyText As String
Select Case targetWord
Case "試験"
rubyText = "│試験 《しけん》"
Case "テスト"
rubyText = "│テスト 《つらい》"
Case Else
rubyText = "│" & targetWord & "《》"
End Select
' 単語を置換
wordRange.Text = rubyText
' 《》の間にカーソルを移動(《の次に移動)
Dim newPos As Long
newPos = InStr(rubyText, "《") + 1
sel.Start = wordRange.Start + newPos
sel.End = sel.Start
sel.Select
End Sub
これを使うには全角スペースを半角に置換して下さい。
何でこうしているかというと、カクヨムって半角スペースが先頭にあると省略されちゃう。
ちなみにスペースの個数も意味があるプログラム言語もありますが、VBAはそうではないそうです。
重ねて言いますが、このエピソードは縦棒を罫線で書いてます。
こうしないと表示されません。
手直しするか、置換して下さい。
それと『《』の前に半角スペース入れてます。
こうしないとカクヨムで表示されません。
コピペ用ならこちら。
Sub ReplaceWordWithRuby()
Dim sel As Range
Set sel = Selection.Range
' カーソルの前の単語を取得
Dim wordRange As Range
Set wordRange = sel.Duplicate
wordRange.MoveStartUntil " ", wdBackward
wordRange.MoveStart wdWord, -1
Dim targetWord As String
targetWord = Trim(wordRange.Text)
Dim rubyText As String
Select Case targetWord
Case "試験"
rubyText = "│試験 《しけん》"
Case "テスト"
rubyText = "│テスト 《つらい》"
Case Else
rubyText = "│" & targetWord & "《》"
End Select
' 単語を置換
wordRange.Text = rubyText
' 《》の間にカーソルを移動(《の次に移動)
Dim newPos As Long
newPos = InStr(rubyText, "《") + 1
sel.Start = wordRange.Start + newPos
sel.End = sel.Start
sel.Select
End Sub
コピペ用も縦棒を罫線で書いてます。
こうしないと表示されません。
手直しするか、置換して下さい。
それと『《』の前に半角スペース入れてます。
こうしないとカクヨムで表示されません。
キーワードを追加するために、改造をするなら、こんな感じです。
Sub ReplaceWordWithRuby()
Dim sel As Range
Set sel = Selection.Range
' カーソルの前の単語を取得
Dim wordRange As Range
Set wordRange = sel.Duplicate
wordRange.MoveStartUntil " ", wdBackward
wordRange.MoveStart wdWord, -1
Dim targetWord As String
targetWord = Trim(wordRange.Text)
Dim rubyText As String
Select Case targetWord
Case "試験"
rubyText = "│試験 《しけん》"
Case "テスト"
rubyText = "│テスト 《つらい》"
Case "追加"
rubyText = "│追加 《ついかしたよ》"
Case Else
rubyText = "│" & targetWord & "《》"
End Select
' 単語を置換
wordRange.Text = rubyText
' 《》の間にカーソルを移動(《の次に移動)
Dim newPos As Long
newPos = InStr(rubyText, "《") + 1
sel.Start = wordRange.Start + newPos
sel.End = sel.Start
sel.Select
End Sub
こんな感じに『Case Else』の前の行に入れると良いでしょう。
キーワードとふりがなを各自で変更するのはさすがに解りますよね。
変更はマクロの表示→変更するマクロを選ぶ→編集ですね。
このマクロの使い方は。
ええと例えば漢字←ここにカーソルを合わせてマクロを使う。
こうなります。
ええと例えば│漢字《》
こんな結果ですね。
漢字のルビを登録していれば。
ええと例えば│漢字 《かんじ》
こうなると思います。
バグというか仕様上の問題点があります。
『耐久試験』という単語に使うと『耐久│試験 《しけん》』こうなります。
『姫様』という単語に使うと『姫│様《》』こうなります。
『姫様』で登録してても同じです。
これは『様』がひとつの記号のような物として扱われているからです。
ビジネス用なので『鈴木様』という言葉をWordは『鈴木』と『様』と分けて認識してます。
仕様なので、回避は難しいです。
こういう部分が不満なら、各自で改良すると良いでしょう。
copilotに訊けば良いですから。
重ねて言いますが、他人が作ったマクロは信用しない。
まあcopilotに作らせてコピペするのが吉かな。
これが正解だと思います。
ちなみに、ネット上に転がっているマクロにはウイルス入りの危険な物が
あったりします。
特に長いソースコードは危険度が増します。
プログラム知識があり解析してから使うのなら、自信があれば自己責任でお願いします。
ここのソースも利用は自己責任でどうぞ。
改良とか色々が分からない方はcopilotに訊くと良いでしょう。
copilotはWindows10と11なら使えると思います。
新規登録で充実の読書を
- マイページ
- 読書の状況から作品を自動で分類して簡単に管理できる
- 小説の未読話数がひと目でわかり前回の続きから読める
- フォローしたユーザーの活動を追える
- 通知
- 小説の更新や作者の新作の情報を受け取れる
- 閲覧履歴
- 以前読んだ小説が一覧で見つけやすい
アカウントをお持ちの方はログイン
ビューワー設定
文字サイズ
背景色
フォント
組み方向
機能をオンにすると、画面の下部をタップする度に自動的にスクロールして読み進められます。
応援すると応援コメントも書けます