第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なら使えると思います。

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

作者を応援しよう!

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

応援したユーザー

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

新規登録で充実の読書を

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

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

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