dポイントプレゼントキャンペーン実施中!

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

A 回答 (3件)

こんばんは。



別の質問の中で、私が回答していますから、そちらを参考にしたほうが早いかもしれません。
Wordのマクロは、標準的には、当該Document の"ThisDocument" モジュールを使います。

というよりも、Excelは、オブジェクトが多いので、標準モジュールを多用します。

ただ、宗派や版によっても違うかとは思いますが、漢訳法蓮華経の読み下しは、どこかにあったような気がします。

それと、ふりがなとおっしゃっていますが、Wordのルビという前提で出来上がっていますから、違う場合は、正しく出ません。Word Document 上のルビそのものからも、ふりがなデータは取り出すことは可能です。今回は、あくまでも、虫食いを作るためのものです。

http://oshiete1.goo.ne.jp/qa5384755.html
#3

いずれにしても、ふりがなデータのみを抜き出すなら、すでに、Wordを想定した回答が出ていますから、そちらを参照してからにしていただけませんでしょうか。こちらは、括弧の半角のみですが、もうひとつのほうは、全角・半角両方の括弧をサポートするように出来ています。
    • good
    • 0

こんにちは。



>ワードのマクロでできるのか、カッコ付きのテキストから検索置換するのか教えてください。

「保存すると書式なし」→「ほぞん□□□しょしき□□」となることですと、括弧以外の文字に対して、全角空白にして、虫食い形式にすることでしょうか?

本来、ふりがなデータを抜き出してリスト化するのは簡単なのですが、虫食いデータにするのは、なかなか難しいです。特に、元のご質問のような文章ですと、() 付きの文章が交じり合っている場合は、誤動作します。

一旦、テキストに出力して、括弧つき・ふりがなデータだけを残して、全角空白にして、それを再び、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
    • good
    • 0
この回答へのお礼

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

お礼日時:2009/10/21 15:06

「保存(ほぞん)すると書式(しょしき)なし」


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

この回答への補足

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

補足日時:2009/10/21 10:25
    • good
    • 0
この回答へのお礼

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

お礼日時:2009/10/21 13:31

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!