このデータは過去ログです。
最新情報は、ブログの「ワイルドカード」に関する項をご覧ください。

 

Word -  置換のワザ > ワイルドカードを使った置換(事例)

ワイルドカードを使った置換についてのQ&Aです。ワイルドカード置換の詳細については、「類似文の一括入力」を参照してください。

-------------------------------------------------------------
−質問−
【0001】を[0001]としたい場合、1回の置換でできますか?


−回答−
手作業だけで1回というのは難しいかもしれませんね。

検索する文字列:【([0-9]{4,4})】
置換後の文字列[\1]
*ワイルドカードにチェックを付けて置換

これで【0001】を[0001]にしておいて、数字の全角→半角変換処理で数字部分を半角にするのが一番楽ではないでしょうか。Wordの[マクロの記録]機能を活用するなどして一連のプロセスをすべてマクロ化すれば、1回の操作で変換可能です。

マクロの記録

1.[ツール]メニューの[マクロ][新しいマクロの記録]を選びます。

2.[マクロ名]の欄(デフォルトではMacro1、Macro2などの表示になります)に半角でマクロ名を入力します。マクロ名は 自分で覚えやすいものにするとよいでしょう。

3.記録したい操作をWord上で普通に実行します。

4.マクロの記録終了のボタンを押します。
(※マクロの記録を開始すると、ツールバーに■と||●の2つのボタンが出てきます。このうち■が記録終了ボタンです。)

5.これでマクロが記録されました。

次回からはマクロのメニューから自分で決めたマクロ名を選択すれば、該当する処理を自動実行できます。

※どういうわけか、Wordにはマクロの記録では記録されない動作もあります。マクロを記録したら、試験ファイルを用意して処理の流れを確認してください。

※置換を記録する場合、検索方向を「文書全体」にしておくと作成したマクロの実行時に(その時点での)カーソルの位置に関係なく処理が行われます。

一方、記録時に検索方向をたとえば「下へ」にしておけば、マクロ実行時のカーソル位置からファイルの最後まで行ったところで処理が止まります。

※以上の処理に限らず、マクロの記録を活用することでさまざまな処理を自動化することができます。ただし、記録時に作業手順を間違えてしまうと、それがそのまま記録されてしまうので、あらかじめ手順をよく考えてから記録を実行するようにだけ、注意してくださいね。

-------------------------------------------------------------
−質問−
【0001】などの段落番号を抜きたいのですが、何か方法はありますか?


−回答−
置換を使って対応できます。
検索する文字列:【[0-9]{4,4}】^13
置換後の文字列:空欄

*ワイルドカードにチェックを付けて置換します。

[0-9]は全角の0〜9までの数字を意味し、{4,4}は4桁だということを意味します。^13は改行記号(^p)です。(→印字されない文字の検索・置換

改行を除きたくない場合は^13を抜き、【 の前のスペースまで含めたいときはスペースも合わせて検索する文字列に入れます。

-------------------------------------------------------------
−質問−
和訳後、消しておくべき半角スペースを一括消去する場合について。
アルファベットに挟まれるべき半角スペース以外の半角スペースを削除する方法を教えてください。


−回答−
検索する文字列:([A-Za-z]) ([A-Za-z])
置換後の文字列:\1$$$\2
*ワイルドカードにチェックを付けて置換

これで、アルファベットに挟まれた半角スペースが$$$に変わります。
$$$でなくても、翻訳文に出ていないものなら何でも構いません。

次に、検索する文字列に半角スペースを入れ、置換後の文字列は何も入れない通常の置換を行い、半角スペースを消します。
(ワイルドカードのチェックを外すのを忘れないように)

最後に、$$$を半角スペースに置換して終わりです。

こちらについても、毎回やるのが面倒なら一連のプロセスをマクロ化すれば1回の操作で処理できます。アルファベットが全角の場合は、上の条件式を全角で書いてください。

-------------------------------------------------------------
−質問−
以下のように入力されている英語と日本語があります。英日間に自動でタブを入れる方法がありますか。


例)
semiconductor半導体
liquid crystal液晶

−回答−
英語(見出し語)の末尾が数字ではなくアルファベットだという前提であれば、置換の機能を使って次のように記述します。

検索する文字列:([A-z]{1,1})([ァ-ヾぁ-ゞ亜-I]{1,1})
置換後の文字列:\1^9\2

ワイルドカードにチェックを付けて置換します。
^9はタブを意味します。(→印字されない文字の検索・置換

念のため、置換後にエクセルに全データを貼り付け、タブの位置を確認してください。
 
−付記−
上記の「I」は、普通の「鶴」とは違う文字です。

この文字はWordの[記号と特殊文字]で、[コード体系]をUnicode にしたときに[種類]CJK互換漢字の最終文字「I」で、S-JISの文字コードが0xFC49、ユニコードは0xFA2Dです。

一方、普通の「鶴」はS-JISの文字コードが0x92DF、ユニコードは0x9DB4なのです。

このように、見た目が同じように見えても別コードの文字もあれば、見た目の形は違うのに同じコードの文字(Wordでは、×記号やギリシャ文字でよく起こる現象です)ということもあります。

もし、この文字はどうなんだろう?と疑問に思うようなことがあったら、コードを調べてみるとよいでしょう。

たとえばWord 2003 の場合、画面上で該当する文字をドラッグ(反転表示)した状態で[挿入]メニューから[記号と特殊文字]を選択します。
これで反転している文字のあるマスが選択状態になります。下の方にある[コード体系]を「Unicode」なり「日本語シフトJIS」なり選択して、コードを比較してみれば同じ文字かどうかが分かります。

文字に関して「あれっ?」と思ったら、コードを確認するのが一番です。
※ 文字コードについては、「文字種の変換とフォントの罠(1)」も併せて参照してください。
 
-------------------------------------------------------------
−質問−
紙の原稿からOCRで電子データを生成したときに、各行の右側に余分な改行が入ってしまうことがあります。この改行を楽に消す方法はないでしょうか。

−回答−
OCRデータの改行は、Word上で段落記号([Enter] キーを押すと入力される)として表示されるコードのこともあれば、ソフトリターン([Shift][Enter]で入力される縦矢印)のこともあります。
 
方法はいくつか考えられますが、ワイルドカードを使う例をパターンごとに示してみたいと思います。

------------------------------------------------------------
【例1】
段落の頭に全角スペースやタブなどの字下げがあり、データが全角文字で構成され、行末にソフトリターンがあるとき

◆データ形式◆
□ああああああああああああ
あああああああああああああ
□ああああああああああああ
あああああああああああああ

◆Wordの置換画面◆

検索する文字列:^11([0-9A-Za-zぁ-ゞァ-ヾΑ-Ωα-ω亜-I])
置換後の文字列:\1

ワイルドカードにチェックを付けて置換を実行します。

^11 はソフトリターンの意味です。段落記号の場合は^13 を使います。
「0-9A-Za-zぁ-ゞァ-ヾΑ-Ωα-ω亜-I」は、全角の0〜9、A〜Z、a〜z、平仮名、カタカナ、ギリシャ文字、漢字を意味します。
必要がない範囲については適宜カットして利用できます。

これで、ソフトリターンの後ろに「全角文字」が続いている部分の改行だけが削られます。全角スペースやタブが続く改行は削られません。

−付記−
「I」はWordの[記号と特殊文字]で、[コード体系]をUnicode にしたときに[種類]CJK互換漢字の最終文字にあたる「I」です。
 
------------------------------------------------------------
【例2】
例1のパターンで、データが半角文字で構成されているとき

検索する文字列の[ ]の中を半角の0-9A-Za-zに変更し、あとは同じです。

------------------------------------------------------------
【例3】
段落の頭に字下げがあり、行末にソフトリターンがあるとき

◆データ形式◆
□ああああああああああああ
あああああああああああああ
□ああああああああああああ
あああああああああああああ

◆Wordの置換画面◆

検索する文字列:^11□
置換後の文字列:^13□

※□は全角スペースの意味です。

これで次のような形になります。

□ああああああああああああ(ソフトリターン)
あああああああああああああ(段落記号)
□ああああああああああああ(ソフトリターン)
あああああああああああああ(ソフトリターン)

検索する文字列を^11 、置換後の文字列を空白にして置換を実行すれば段落途中の改行だけを消すことができます。

この方法だと、ワイルドカードを使わずに置換が可能です。
また、データが全角か半角かも問いません。字下げがタブの場合は全角スペースの代わりに^9を使えばOKです。

また、各行末がソフトリターンではなく段落記号の場合は、^11と^13を入れ替えれば同じことができます。(→印字されない文字の検索・置換

------------------------------------------------------------
【例4】
段落の頭に字下げがなく、行末にソフトリターンがあるとき

段落間の区別がつかないので、ある程度は人手による作業が必要です。
段落の区切りになる部分に、何でもよいので区切りを示す文字を入れていきます。

◆データ形式◆
ああああああああああああ(ソフトリターン)
ああああああああああああ(ソフトリターン)
ああああああああああああ(ソフトリターン)
ああああああああああああ(ソフトリターン)



ああああああああああああ(ソフトリターン)
ああああああああああああ(ソフトリターン)
★(段落記号)
ああああああああああああ(ソフトリターン)
ああああああああああああ(ソフトリターン)

このとき、各行末がソフトリターンなら区切り文字の改行は段落記号、行末が段落記号なら区切り文字の改行を使うようにすると、次に一括置換を利用できるので便利です。

 
  用語

マクロ

決まった操作の手順を自動化するためのプログラム。マクロの記述に使われる言語を、「マクロ言語」と呼びます。

たとえば、左枠最初の質問にある置換処理。Wordのマクロプログラムでは、次のように記述されます。

【Word上】
検索する文字列:【([0-9]{4,4})】
置換後の文字列[\1]
*ワイルドカードにチェックを付けて置換

【マクロプログラム】
 With Selection.Find
.Text = "【([0-9]{4,4})】"
.Replacement.Text = "[\1]"
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchByte = False
.MatchAllWordForms = False
.MatchSoundsLike = False
.MatchFuzzy = False
.MatchWildcards = True
End With
Selection.Find.Execute Replace:=wdReplaceAll

こうして自分で1行ずつ書けば、たいていのことは実現できます。
でも、とてもじゃなくて覚えきれない・・・そんなときの助けになるのが「マクロの記録」。この機能を使えば、プログラム記述作業が楽になりますよ。

   
  Learn more...
IT用語辞典 e-Words
【macro】

Wordで実践 やさしくて役に立つ「マクロ」事例集―2003/2002対応

Wordで実践 やさしくて役に立つ「マクロ」事例集―2003/2002対応

今までずっと、ありそうでなかったWordマクロ本。
英語版ですら非常に数が限られますし、ましてや日本語できちんとしたWordマクロ本は皆無に等しかったのです。

それが2006年2月に出てきたのは、世の中がパソコン活用に向いているという証拠かもしれません。

著者の西上原裕明さんは、いってみればWordで食べているような人で、『
知りたい操作がすぐわかる標準Word2003全機能Bible―WindowsXP対応』など、分かりやすく情報豊富な本を多数出しています。
 
そんな彼のマクロ本。事例が豊富で、マクロについて勉強したいときのイチオシのオススメです。

わたしが運営しているメーリングリストでもメンバー自作のマクロがいくつか公開されていますが、それぞれに苦労してマクロを作っているようです。そんなときにも、体系的に説明した本が1冊あると安心ですね。
 

  Notice
Microsoft Wordの問題により、マクロが自動的に実行される

不正なWord文書が自動的にマクロを実行する
 

 
 
 
 
 

Prev << Back >> Next