Word VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


283 / 308 ツリー ←次へ | 前へ→

【106】Wordのルビを青空文庫形式のふりがなに... きの 04/6/16(水) 2:55 質問[未読]
【108】Re:Wordのルビを青空文庫形式のふりがなに... H. C. Shinopy 04/6/19(土) 23:18 回答[未読]
【110】Re:Wordのルビを青空文庫形式のふりがなに... きの 04/6/21(月) 10:30 お礼[未読]

【106】Wordのルビを青空文庫形式のふりがなに...
質問  きの  - 04/6/16(水) 2:55 -

引用なし
パスワード
   Wordでちょっとした文章を書いていたのですが、
ルビを振った文章をTXT形式にして人に渡そうと思っています。
携帯端末などのリーダーでは青空文庫形式のふりがなにすれば読むときに
ルビを再現できるのでそのようにしたいと思っています。
このような操作をなにか簡単にできる方法あるでしょうか?

普通のTXT形式でセーブしてしまうと途中にひらがなとかが入っていたり、
漢字が連続するとリーダー側でルビ振りするときに都合が悪い出力になるので、
青空文庫形式のふりがなで、

武州|青梅《おうめ》の宿

のように|ではじまり《》の形式でふりがな付けをしたいのです。

これを実現するよい方法がありましたらどなたか教えていただきたく、
どうぞよろしくお願いいたします。

なお、使用しているWordは2003です。

【108】Re:Wordのルビを青空文庫形式のふりがなに...
回答  H. C. Shinopy  - 04/6/19(土) 23:18 -

引用なし
パスワード
   大変、愚直な算法ですが、
下のマクロで良ければ・・・

Wordのルビは、フィールドの挿入という形になっていますので、
とにかく、フィールドとなっている部分を
「青空文庫形式のフリガナ」に
無理やり置き換える処理をするようにしました。

ルビ以外の挿入されたフィールド(日付表示とか分数表示とか)があると、
使用不可。

Sub myFieldToAozoraFurigana()
 Dim myField As Field
 Dim myText As String
 Dim myCount As Integer
 '
 If ActiveDocument.Fields.Count <= 0 Then
  MsgBox "フィールドなし。"
  Exit Sub
 End If
 '
 Selection.WholeStory
 Selection.copy
 Selection.Collapse wdCollapseStart
 Documents.Add DocumentType:=wdNewBlankDocument
 Selection.PasteAndFormat (wdPasteDefault)
 Selection.HomeKey Unit:=wdStory
 '
 For Each myField In ActiveDocument.Fields
  myField.Select
  myField.ShowCodes = True
  myText = Selection.Range.Text
  myCount = InStrRev(myText, "(")
  myText = Mid(myText, myCount)
  myCount = Len(myText)
  myText = Left(myText, myCount - 2)
  myCount = InStr(myText, ",")
  myText = "|" & Mid(myText, myCount + 1) & Left(myText, myCount - 1)
  myText = Replace(myText, "(", "《")
  myText = Replace(myText, ")", "》")
  myField.Delete
  Selection.InsertBefore (myText)
 Next myField
 '
 Selection.Collapse wdCollapseEnd
 Selection.HomeKey Unit:=wdStory
 '
 With Dialogs(wdDialogFileSaveAs)
  .Show
 End With
End Sub

【110】Re:Wordのルビを青空文庫形式のふりがなに...
お礼  きの  - 04/6/21(月) 10:30 -

引用なし
パスワード
   >Wordのルビは、フィールドの挿入という形になっていますので、
>とにかく、フィールドとなっている部分を
>「青空文庫形式のフリガナ」に
>無理やり置き換える処理をするようにしました。
>
>ルビ以外の挿入されたフィールド(日付表示とか分数表示とか)があると、
>使用不可。

投稿後

  Selection.NextField.Select
  Selection.Cut
  Selection.TypeText Text:="|"
  Selection.PasteAndFormat (wdPasteText)

でとりあえずルビフィールドをテキスト形式でカットアンドペーストして
後からまとめて()を《》に挿入できないかなぁ、
と試行錯誤していたのですが、うまくいかなったのでこのマクロ助かりました。

フィールドってルビとか日付とか識別方法あれば青空文庫変換として
汎用に使えるのでしょうが、
自分の目的にはこれで十分すぎるほどです。ありがとうございます。

283 / 308 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
207142
(SS)C-BOARD v3.8 is Free