Word (一般機能)

Wordの一般機能に関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 10 Home : Word 2013)
記号の置換について
投稿日時: 17/03/22 16:53:03
投稿者: ももいろのことり

こんにちは。以前に置換についてお世話になったものです。
http://www.moug.net/faq/viewtopic.php?t=74756
その節はありがとうございました。
 
さて、その後もデーターを編集しておりますが、特定の記号を置換しようとするとうまくいかず、つまずいています。
 
文書中にダブルクォーテーション " で挟まれている部分が数十ヶ所あります。
例)" Bonjour "
 
データーの作成者に尋ねると、<< Bonjour >> の様に、2重の小なり記号と2重の大なり記号(掲示板の都合上、<と>を二つずつ入力してありますが、実際はそれぞれ半角1文字分の機種依存文字です。)が入力されていた部分が文字化けをしている、とのことです。
 
数が多いので、置換の機能を使いたいと思い、とりあえず次のように設定してみました。
検索する文字列に ダブルクォーテーション "
置換後の文字列に 2重の小なり記号 << 
 
すると、「完了しました。○○個の項目を置換しました。」と表示されるのに一つも置き換わっていません。
文書の最初から検索させてみても同じ個数を表示します。何度再検索させても同じ結果になりました。
どのように設定すればよいのでしょうか。
 
上の操作では2重の小なり記号に置換することしか設定しておりませんが、
本来は文字列を、<< Bonjour >> の様に、2重の小なりと2重の大なりでくくりたいので、
 
" (ダブルクォーテーションと半角スペース)を << (2重の小なり記号と半角スペース)に
 "(半角スペースとダブルクォーテーション)を  >>(半角スペースと2重の大なり記号)に
 
と、設定して置換しようとしましたがこちらもうまくいきませんでした。
 
実際に置換したい記号の文字コードは次の通りです。
2重の小なり記号 00AB
2重の大なり記号 00BB
 
アドバイスの程、どうぞよろしくお願いいたします。

回答
投稿日時: 17/03/22 22:12:43
投稿者: んなっと

●単純に考えると
  
 置換
→オプション
 ワイルドカードを使用する にチェック
→検索する文字列
" (*) "
 置換後の文字列
《 \1 》
ですが、これだとだめですか?
 
 
●「フォントの違いで表示される文字列が変わる」こともあるのですが、
"の部分が特殊なフォントになっていませんか?
 
 
●「文字化け」ではなくて「オートコレクト(入力中に自動修正する)」の可能性も少しだけありますが..
 
《 → “
》 → ”
 
これなら最初の置換と2回目以降の置換は結果が異なるはずですね。

投稿日時: 17/03/29 19:01:40
投稿者: ももいろのことり

ご教示ありがとうございます。
 
お教えいただいたとおりに捜査してみましたが、元のデーターに何かエラーがあるのか、上手に置換できませんでした。
「完了しました。○○個の項目を置換しました。」と表示されるのに一つも置き換わりませんでした。
(文書中の記号をコピーして置換のダイアログに貼り付けました。)
 
ちなみに、フォントはすべて Times New Roman です。
 
ダブルクォーテーション "ではなく、似たような記号なのかもと思い、操作してみましたがそちらもうまくいきませんでした。
文字コード 02DD や 02BA など
 
同様に数字の右肩に小さな丸印が入力されている部分があります。
 
例)1̊   あたかも破裂音の「ぱ」の右肩の丸のような記号です。
文字コードは 030A です。
 
この丸が、文書内で全く必要のないところ、脈絡なくあちこちに出てきます。
必要な丸もありますが、何ろかの文字が化けてしまったような部分にも出てくるので、置換を使いたいと思い、操作してみましたところ、前後に空白があるものは読み取ってきましたが、文字のすぐ横に入っているものは置換しませんでした。
 
文字と記号が密着していると置換しない部分があるようです。
前出のダブルクォーテーションに似た記号も似たような結果になったので、共通の理由があるのかもしれません。
 
つたない説明で申し訳ありませんが、不足している情報があればお尋ねください。
引き続きよろしくお願いいたします。

回答
投稿日時: 17/03/30 10:19:04
投稿者: んなっと

°030A
 " 030B
アクセント付き文字などを2文字で疑似的に作成するための、
 「結合分音記号」のことでしょうか。
 例えば
Aのすぐ右に 挿入→記号と特殊文字  文字コード 030A (°の形) とすると
自動的にÅになるような。
 
テキストエディタやXMLを使ってもできるのかもしれませんが、Word単体で処理しましょう。
ただし、┏と┛は文書内で使われていない文字であるとします。
 
1.VBAを使って
 
Sub test()
  Dim i As Long, j As Long
  Dim r As Range
  Dim s As String
  Set r = ActiveDocument.Range(0, 0)
  With r.Find
    .Text = "[" & ChrW(&H300) & "-" & ChrW(&H36F) & "]"
    .MatchWildcards = True
    Do While .Execute
      r.Text = "┏" & AscW(r.Text) & "┛"
      r.Collapse wdCollapseEnd
    Loop
  End With
  With ActiveDocument.Characters
    For i = .Count To 1 Step -1
      Set r = .Item(i)
      If Len(r.Text) > 1 Then
        s = Left(r.Text, 1)
        For j = 2 To Len(r.Text)
          s = s & "┏" & AscW(Mid(r.Text, j, 1)) & "┛"
        Next j
        r.Text = s
      End If
    Next i
  End With
End Sub
 
これで┏778┛ABC┏779┛のようになり、結合分音記号が┏文字コード┛に置き換わります。
 
2.結果をよく見てください。仮に
 
┏778┛ABC┏779┛
 ↓
《 ABC 》
のパターンだと判明したら...
 
置換 ワイルドカード
検索する文字列:
┏778┛([!^13^l]@)┏779┛
置換後の文字列:
《 \1 》
 
置換 ワイルドカード
検索する文字列:
┏*┛
置換後の文字列:

回答
投稿日時: 17/03/31 09:22:05
投稿者: んなっと

VBAを使わない別の方法です。
本来はテキストエディタを使いますが、ここではメモ帳で代用する手順を書きます。
 
1.現在の文書を Webページ(*.htm) で保存
例えばaaa.htmとします。
 
2.メモ帳を起動して、ファイルの種類を「テキスト文書(*.txt)」から「すべてのファイル(*.*)」に変更
→上で保存したaaa.htmを開く
→Ctrl+Aで全選択してCtrl+Cでコピー
 
3.新規Word文書を作成してCtrl+Vで貼り付け
→ずーっと下の方の
<body lang=JA style=....>と
</body>の間をよく見る
 
仮に
&#★778;ABC&#★779; [←実際には★はありません]

《ABC》
のパターンだとしたら
 
→置換 ワイルドカード
検索する文字列:
&#★778;(*)&#★779; [←★は削除してください]
置換後の文字列:
《\1》
→置換 ワイルドカード
検索する文字列:
&#[78][0-9]{2};
置換後の文字列:
 
→Ctrl+Aで全選択してCtrl+Cでコピー
→先ほどのメモ帳にCtrl+Vで貼り付け(上書き)
→上書き保存
 
4.再度Wordでaaa.htmを開く
→*.docxで保存
 
Word単体ではない方法はおそらくももいろのことりさんの方が詳しいと思いますので、
説明不足をご容赦ください。

投稿日時: 17/06/29 18:14:04
投稿者: ももいろのことり

長い間放置してしまい申し訳ありませんでした。
 
スキャン時に日本語の破裂音の記号と認識したり、結合分音記号と認識したりなのが問題だったみたいですが、スキャンしたデーターを「Googleドライブに入れて」GoogleドキュメントのOCRにかけると比較的文字化けが少なくなり、んなっと様にご教示いただいた以前の方法(6か月以上たったので削除されてしまったみたいです)でうまくいきました!
 
ご親切にお知恵を貸していただいて、ありがとうございました。
またよろしくお願いいたします。