• ベストアンサー

Word2000 不要な半角スペースを削除するマクロ作れますか?

Word2000で文章を校正しています。 英数字と日本語の間は半角スペースを入れないのがルールなのですが、 原稿には、不要な半角スペースが大量に含まれており、困っています。 例>> おしえて△goo → おしえてgoo Microsoft△と△Oracle で → MicrosoftとOracleで このような半角スペースを一括で置換するマクロを作ることは (技術的に)可能でしょうか。 また、Word の既存機能を使って、 このような半角スペースを特定することができますでしょうか。 不要なのは、英数字と日本語に挟まれた半角スペースのみです。 ご存じの方がいらっしゃいましたら、 よろしくご教示ください。b

質問者が選んだベストアンサー

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

こんには。 >英数字と日本語の間は半角スペースを入れないのがルールなのですが、 通常は、和字とANSIの間には半角スペースを入れるはずですが。 正規表現の話が出ていましたので、一応、正規表現で行いました。Wordのワイルドカードは似ていますが、正規表現とは違います。特に、「*」「?」が違うように思います。もしかしたら、ワイルドカードで出来るかもしれませんが、あまり期待できないような気がします。 それと、国内のWeb サイトに参考になるようなWord VBAは出ていないと思います。ただし、Word97のサンプルは、どこかの出版社のサイトには残っているはずです。ただ、早い話、マイクロソフト・サポートには、まだぎっしり、Word VBAのコードが残っています。整理されていないのが、残念です。 なお、以下は、Word 2003を使って作っていますが、メソッドのプロパティ等は、Word2000のそれとチェックはしております。Wordマクロは、Excelとは違い、戻すことが可能ですが、一応、バックアップはしておいてください。 '--------------------------------------------------------------- Sub OneByteSpaceDeleteProc()  Dim objRegExp As Object  Dim myPattern As Variant  Dim ReplaceWords As String  Dim Matches As Object  Dim Match As Object  Set objRegExp = CreateObject("VBscript.RegExp")  '  Selection.HomeKey Unit:=wdStory  Selection.EndKey Unit:=wdStory, Extend:=wdExtend  '和字の半角カタカナは省きます。  For Each myPattern In Array("[、-龍]\s+[0-~]+", "[0-~]+\s+[、-龍]")  With objRegExp   .Global = True   .IgnoreCase = True   .Pattern = myPattern   If .Test(Selection) Then    Set Matches = .Execute(Selection)    For Each Match In Matches     '半角、vbBinaryCompare     ReplaceWords = Replace(Match.Value, " ", "", , , vbBinaryCompare)     myReplace Match.Value, ReplaceWords    Next Match    End If   End With  Next myPattern   Selection.HomeKey Unit:=wdStory   MsgBox "終了", 64  Set objRegExp = Nothing End Sub 'Wordのプロパティは、省略しないでくださいね。 Sub myReplace(SearchWd As String, ReplaceWd As String)  Selection.Find.ClearFormatting   Selection.Find.Replacement.ClearFormatting   With Selection.Find     .Text = SearchWd     .Replacement.Text = ReplaceWd     .Forward = True     .Wrap = wdFindContinue     .Format = False     .MatchCase = False     .MatchWholeWord = False     .MatchByte = True     .MatchAllWordForms = False     .MatchSoundsLike = False     .MatchWildcards = False     .MatchFuzzy = False   End With   Selection.Find.Execute Replace:=wdReplaceAll End Sub p.s. そのまま、Selection をReplace で置き換えようとすると、置き換えるたびに、CR コードが入るので、このようなサブルーチン型にしました。

2006papiko
質問者

お礼

おおおおおおおっ!! 素晴らしい。 見事に、一発で日本語と英数字の間の半角だけが削除されました。 コードまで書いていただいてありがとうございました。 このやり方で対応しようと思います。 マイクロソフトのサポートページ、私も参照してみます。

その他の回答 (3)

回答No.3

置換をする前に以下のことを確認してくれませんか。 メニューから[ツール]→[オプション]→[表示]タブに ある[編集記号の表示]で[すべて]にチェックを入れる。 これで半角スペース部分が挿入されたスペースなら、 何らかの編集記号が表示されます。 全く文字間に何も編集記号が無いのなら、メニューの [書式]→[段落]→[体裁]タブにある[文字幅と間隔]の [日本語と英字の間隔を自動調整する]のチェックと、 [日本語と数字の間隔を自動調整する]のチェックが、 入ったままだと日本語と英数字の間にスペースが入る ようになります。 http://web.sfc.keio.ac.jp/~t03920hm/ahoWord/aw_ejkan.htm [ Ctrl+A ]キーで全選択し、上記のチェックを外して みて下さい。英数字と日本語に挟まれた半角スペース が消えませんか? 全選択する前にどこかの段落で試しても良いですね。

2006papiko
質問者

お礼

意図的に入力された半角スペースの為、この方法では削除することができませんでしたが、このような技があるとは知りませんでした。 とても勉強になりました。 回答いただき、ありがとうございます。

  • papayuka
  • ベストアンサー率45% (1388/3066)
回答No.2

一応、 検索する文字列に  ([!A-Za-z])△([A-Za-z]) または ([A-Za-z])△([!A-Za-z]) 置換後の文字列に  \1\2 (△は半角空白の意味) でオプションのワイルドカードを使用するにチェックを入れて置換したら、サンプルに関しては置換されたけど、、、 正規表現はまったく自信ないです、、、(^^;

2006papiko
質問者

お礼

ありがとうございます。 無事解決しました。

  • popesyu
  • ベストアンサー率36% (1782/4883)
回答No.1

Wordでも正規表現を使った置き換えでできるんじゃないんですかね。 http://homepage2.nifty.com/zaco/rexp/rexp02.html http://homepage2.nifty.com/buckeye/software/helps/st/pages/regular.html Wordで正規表現を使ったことがないのでどこまでできるかは知りませんが。

2006papiko
質問者

お礼

ありがとうございます。 無事解決しました。

関連するQ&A

  • Wordで半角スペース8個分を削除したい

    文章のすべての行の頭に入ってしまっている 半角8個分のスペースを一括削除する方法を探しています。 wordの置換で、半角の空白を指定して置換すると、 削除したくない文章内の半角スペースも削除されてしまいます。 これらはそのままで、頭の半角スペース8個分だけをターゲットに指定して削除する 方法はありますでしょうか? ちなみに、インデントは左端ピッタリに寄っています。 よろしくお願いいたします。

  • Word2007で半角スペースが打てない

    今まではWord2003を使っていて、 最近になってWord2007に切り替えたのですが、 今までのように半角スペースが打てずに困っています。 入力モードを切り替えても、shift+spaceキーでも半角じゃなく、 全角スペースになってしまいます。 キー操作はMicrosoft IMEになっているのですが、 細かい設定とかは今までしたことがありません。 どうしたら半角スペースを打てるのか、ご存知の方教えて下さい。

  • 全角入力中に半角スペースを挿入できますか?(Wordなどで)

    Wordなどで半角スペースを入れるには、半角に切り替えないとできないのでしょうか? 全角文字→英数字変換ならF10でできて便利ですが、あのようなことはスペースではできないのでしょうか。

  • ペーストで半角スペースを自動で置換してくれるツール

    コピーした文の半角スペースを、_(アンダーバー)なり、他の半角文字に置換するか、削除してペーストしてくれるツールをご存知ないでしょうか。 Word2003を使うときに、ペーストする文字の半角スペースが邪魔になる局面があるので、これを何とかしたいと思い、質問しています。 Wordマクロで実現できればいいですが、私のマクロ技術は、記録マクロを作っていじったり、他の人のマクロをコピペして使わせてもらっている程度のレベルです。 Wordで、ペーストするときに、半角スペースを置換するマクロは、ありそうなのですが、調べたけれど、見つかりません。 そこで、別の方法ですが、Cliborのようなコピペツールを使おうと思いました。 でも、クリップボードの情報で、半角スペースを削除してくれるツールが調べても見つからない です。もし他のツールでこうした機能があって、ショートカットに割り付けすることができれば、 非常に助かりますので、よろしくおねがいします。 Wordで、ペーストしてから、置換をする方法を使うのは、その都度、操作するのに手間がかかる ので、それよりも楽な方法があると思い、質問しています。 ※具体的なやりたいこと。別に、本筋の質問とは関係ないので、読まなくてもいいです。 Word2003で文書内にリンクを張るとき、事前にリンク先に名前をつけて設定する必要があります。 リンク元(青色で下線になっている箇所)をマウスオーバーすれば、リンク先の名前が出てきます。 このリンク先の名前が、リンク先と同じになるように、設定しておけば、どういう場所にリンクを張った のか、分かりやすくなるので、便利です。ですが、リンク先の名前は、半角スペースがあると、受け付け ないので、この半角スペースを何とかしたいと思い、質問しました。

  • Word ワード 検索置換 行頭スペース

    Microsoft ワードにおいて、文頭のスペースだけ消したいです。  文頭のスペース(全角or半角)のみを検索置換して消去(または他の文字に変換)することはできないでしょうか。

  • 全角モードで半角スペースを打てますか?

    日本語の中に、例えば Microsoft Windows と打ちたいときがあります。すなわち、MicrosoftとWindowsの間は半角スペースを入れたいのです。このような場合、いつも半角に切り替えてスペースを打ち、また全角に戻しています。 全角→半角→全角の手間を経ずに Microsoft Windows と打つ方法ありますか? Windows/MS-IMEとします。

  • [ワード] 半角・全角の数字が混在する文章を、一発で半角に統一したい

    皆様のお力を貸してください。 ワードの文書なのですが。 100ページ以上にもなる文書で、半角と全角の英数字が混在しています。 これらを一発で全て半角の英数字に置き換えたいのですが、 どのようにすれば宜しいでしょうか? 「置換」機能を使うのでしょうか? よろしくお願いいたします。

  • ワードで1/4スペース

    Word2000を使っています。 検索と置換の特殊文字の中に「1/4スペース」とありますが、文字入力中に簡単に1/4スペースは表示できるのでしょうか? 例えば、全角スペースならスペースキー、 半角スペースならシフト+スペースキーのように。 よろしくお願いします。

  • Wordでスペースを押すと『□』が出る。

    Wordで(日本語・全角入力の時)スペースキーを押すと『□』が出てしまいます。 半角の場合は『・』が出ます。 とくに支障があるわけではないのですが、邪魔です。なので消す方法を教えてください。

  • スペース、特殊文字、英数字を半角で入力

    韓国語IME を使っているとき、スペース、特殊文字、英数字を半角で入力するにはどうすれば良いのでしょう。

専門家に質問してみよう