- 締切済み
ワードのふりがなと漢字を別々にテキスト書き出ししたい。
ふりがな付きのワードデータ 例「保存すると書式なし」を、別名保存書式なしのTXTにすると、「保存(ほぞん)すると書式(しょしき)なし」のようにカッコ付きになります。 それをふりがなだけの「ほぞん□□□しょしき□□」のテキストと普通の「保存すると書式なし」のテキストと2ツにできるのでしょうか。 ワードのマクロでできるのか、カッコ付きのテキストから検索置換するのか教えてください。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- Wendy02
- ベストアンサー率57% (3570/6232)
こんばんは。 別の質問の中で、私が回答していますから、そちらを参考にしたほうが早いかもしれません。 Wordのマクロは、標準的には、当該Document の"ThisDocument" モジュールを使います。 というよりも、Excelは、オブジェクトが多いので、標準モジュールを多用します。 ただ、宗派や版によっても違うかとは思いますが、漢訳法蓮華経の読み下しは、どこかにあったような気がします。 それと、ふりがなとおっしゃっていますが、Wordのルビという前提で出来上がっていますから、違う場合は、正しく出ません。Word Document 上のルビそのものからも、ふりがなデータは取り出すことは可能です。今回は、あくまでも、虫食いを作るためのものです。 http://oshiete1.goo.ne.jp/qa5384755.html #3 いずれにしても、ふりがなデータのみを抜き出すなら、すでに、Wordを想定した回答が出ていますから、そちらを参照してからにしていただけませんでしょうか。こちらは、括弧の半角のみですが、もうひとつのほうは、全角・半角両方の括弧をサポートするように出来ています。
- Wendy02
- ベストアンサー率57% (3570/6232)
こんにちは。 >ワードのマクロでできるのか、カッコ付きのテキストから検索置換するのか教えてください。 「保存すると書式なし」→「ほぞん□□□しょしき□□」となることですと、括弧以外の文字に対して、全角空白にして、虫食い形式にすることでしょうか? 本来、ふりがなデータを抜き出してリスト化するのは簡単なのですが、虫食いデータにするのは、なかなか難しいです。特に、元のご質問のような文章ですと、() 付きの文章が交じり合っている場合は、誤動作します。 一旦、テキストに出力して、括弧つき・ふりがなデータだけを残して、全角空白にして、それを再び、Wordに呼び出し、そのWordの表示をスペースが見えるように切り替えるものです。 '------------------------------------------- Sub PingPickUp() 'フリガナデータの抽出 Dim newDoc As Document Dim Matches As Object Dim Match As Object Dim FNo As Integer Dim oFno As Integer Dim TextLine As String Dim Buf As String Dim i As Long Selection.HomeKey Unit:=wdStory Selection.EndKey Unit:=wdStory, Extend:=wdExtend If InStr(1, Selection.Text, "(", 1) = 0 Then MsgBox "フリガナデータがないと思われます。", vbInformation Exit Sub End If On Error GoTo ErrorHandler Selection.Copy Set newDoc = Word.Documents.Add newDoc.Content.Paste newDoc.SaveAs "$$tmp.txt", wdFormatText newDoc.Close With CreateObject("VBScript.RegExp") .Pattern = "\([^\)]+\)" 'パターン .Global = True oFno = FreeFile() Open "$$otmp.txt" For Output As #oFno FNo = FreeFile() Open "$$tmp.txt" For Input As #FNo Do While Not EOF(FNo) Line Input #FNo, TextLine Buf = TextLine If .Test(Buf) Then Set Matches = .Execute(Buf) i = 1 For Each Match In Matches Mid(Buf, i, Match.firstindex - i + 1) = String(Match.firstindex - i + 1, Chr(&H8140)) '括弧を取る Buf = Replace(Buf, "(", "", , , 1): Buf = Replace(Buf, ")", "", , , 1) i = Match.firstindex + Len(Match.Value) + 1 Next Else Buf = String(Len(Buf), Chr(&H8140)) End If Print #oFno, Buf Buf = "" Loop End With ErrorHandler: If Err.Number > 0 Then MsgBox Err.Description End If Close #FNo Kill "$$tmp.txt" Close #oFno If Dir("$$otmp.txt") <> "" Then With Documents.Open("$$otmp.txt") .Windows(1).View.ShowSpaces = True End With End If End Sub
- DreamyCat
- ベストアンサー率56% (295/524)
「保存(ほぞん)すると書式(しょしき)なし」 ↓ エクセルシートに貼り付けて データ→区切り位置 で(を指定したり )を指定したりすれば 取り出すことは可能です。 文章によって分離されたふりがなが入るセルの列が不ぞろいになる場合も多いでしょうから、作業が楽になるかどうかはわかりません。 取り出しが終わったら、不要な文字を削除して ワードに貼り付けます。
お礼
初めてなのでお礼の入力を忘れていました。 ありがとうございました。
補足
ありがとうございました。( の区切り位置で下記のように Iほぞん)すると書式Iしょしき)なし」 ふりがなの所で分かれるので、後は手作業で ほぞん□しょしき□ としていきます。が文字量が多いので マクロとかで()かっこかっこの間の文字をとりだして、テキストにすることはできないでしょうか。
お礼
すごいプログラムありがとうございます。私は初心者ですので、早速標準モジュールの中へコピペしましたが「プロシャージャーの呼び出し、引数が不明」で□□ばかりになりました。 主旨は虫食い形式にはせずに、カッコ内のふりがなデータを抜き出してテキスト化することと、カッコ以外の文字をテキストにしたいのです。 例 妙(みょう)法(ほう)自我得佛來(じ-が-とくぶつらい)…を 「妙法自我得佛來…」と「みょうほうじ-が-とくぶつらい…」にしたいのです。 素人ですが、せっかくワードデータに漢字とふりがながあるのだから、手作業でなく、自動処理したいと頭から湯気がでています。 再度よろしくお願いします。