|
大変、愚直な算法ですが、
下のマクロで良ければ・・・
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
|
|