• 締切済み

ワードのふりがなと漢字を別々にテキスト書き出ししたい。

ふりがな付きのワードデータ 例「保存すると書式なし」を、別名保存書式なしのTXTにすると、「保存(ほぞん)すると書式(しょしき)なし」のようにカッコ付きになります。 それをふりがなだけの「ほぞん□□□しょしき□□」のテキストと普通の「保存すると書式なし」のテキストと2ツにできるのでしょうか。 ワードのマクロでできるのか、カッコ付きのテキストから検索置換するのか教えてください。

みんなの回答

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.3

こんばんは。 別の質問の中で、私が回答していますから、そちらを参考にしたほうが早いかもしれません。 Wordのマクロは、標準的には、当該Document の"ThisDocument" モジュールを使います。 というよりも、Excelは、オブジェクトが多いので、標準モジュールを多用します。 ただ、宗派や版によっても違うかとは思いますが、漢訳法蓮華経の読み下しは、どこかにあったような気がします。 それと、ふりがなとおっしゃっていますが、Wordのルビという前提で出来上がっていますから、違う場合は、正しく出ません。Word Document 上のルビそのものからも、ふりがなデータは取り出すことは可能です。今回は、あくまでも、虫食いを作るためのものです。 http://oshiete1.goo.ne.jp/qa5384755.html #3 いずれにしても、ふりがなデータのみを抜き出すなら、すでに、Wordを想定した回答が出ていますから、そちらを参照してからにしていただけませんでしょうか。こちらは、括弧の半角のみですが、もうひとつのほうは、全角・半角両方の括弧をサポートするように出来ています。

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.2

こんにちは。 >ワードのマクロでできるのか、カッコ付きのテキストから検索置換するのか教えてください。 「保存すると書式なし」→「ほぞん□□□しょしき□□」となることですと、括弧以外の文字に対して、全角空白にして、虫食い形式にすることでしょうか? 本来、ふりがなデータを抜き出してリスト化するのは簡単なのですが、虫食いデータにするのは、なかなか難しいです。特に、元のご質問のような文章ですと、() 付きの文章が交じり合っている場合は、誤動作します。 一旦、テキストに出力して、括弧つき・ふりがなデータだけを残して、全角空白にして、それを再び、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

senooss
質問者

お礼

すごいプログラムありがとうございます。私は初心者ですので、早速標準モジュールの中へコピペしましたが「プロシャージャーの呼び出し、引数が不明」で□□ばかりになりました。 主旨は虫食い形式にはせずに、カッコ内のふりがなデータを抜き出してテキスト化することと、カッコ以外の文字をテキストにしたいのです。 例 妙(みょう)法(ほう)自我得佛來(じ-が-とくぶつらい)…を 「妙法自我得佛來…」と「みょうほうじ-が-とくぶつらい…」にしたいのです。 素人ですが、せっかくワードデータに漢字とふりがながあるのだから、手作業でなく、自動処理したいと頭から湯気がでています。 再度よろしくお願いします。

  • DreamyCat
  • ベストアンサー率56% (295/524)
回答No.1

「保存(ほぞん)すると書式(しょしき)なし」    ↓ エクセルシートに貼り付けて  データ→区切り位置 で(を指定したり )を指定したりすれば 取り出すことは可能です。 文章によって分離されたふりがなが入るセルの列が不ぞろいになる場合も多いでしょうから、作業が楽になるかどうかはわかりません。  取り出しが終わったら、不要な文字を削除して ワードに貼り付けます。

senooss
質問者

お礼

初めてなのでお礼の入力を忘れていました。 ありがとうございました。

senooss
質問者

補足

ありがとうございました。( の区切り位置で下記のように Iほぞん)すると書式Iしょしき)なし」 ふりがなの所で分かれるので、後は手作業で ほぞん□しょしき□ としていきます。が文字量が多いので マクロとかで()かっこかっこの間の文字をとりだして、テキストにすることはできないでしょうか。

関連するQ&A