タイムマシーンがあったら、過去と未来どちらに行く?

英語と日本語が混在しているdocファイルがあり、
日本語のみ一括削除したいと思っております。
日本語(=2バイト文字)を一括削除するマクロはあるでしょうか。

A 回答 (3件)

下記のように、Functionプロシージャをサブルーチンとして使い、BYTE2_FINDを実行してみてください。


成功する場合は、MsgBox関数の直後に削除のコードを入れてみてはいかがでしょう?

Sub BYTE2_FIND()
Dim myText As String
Dim i As Integer
For i = 1 To ActiveDocument.Characters.Count
myText = Selection.Text
If LenMbcs(myText) > 1 Then
 Selection.MoveRight Unit:=wdCharacter, Count:=1, Extend:=wdExtend
 If MsgBox("2バイト文字が見つかりました。続けますか?", vbYesNo) = vbNo Then
  Exit Sub
 End If
End If
Selection.MoveRight
Next i
End Sub

Function LenMbcs(ByVal str As String)
'2バイト判別Function
 LenMbcs = LenB(StrConv(str, vbFromUnicode))
End Function
    • good
    • 0

ドキュメントの各文字を順々にLenB関数でチェックしてゆく方法があります。



Function LenMbcs(ByVal str As String)
'2バイト判別Function
 LenMbcs = LenB(StrConv(str, vbFromUnicode))
End Function

ただ、これをループ処理にかけ、削除してゆくことになりますが、長文になると遅くなります。
試してみては如何でしょう。

この回答への補足

ご連絡ありがとうございました。
上記でマクロを作成してみました。
ただ、私自身ほとんどマクロの知識がないため、
上記でのマクロでは、エラーが出て使用できない状態です。
Fuction~End Function部分で新規マクロを作成すれば宜しいのですよね?
すみませんが、追加で他の文言も登録、等々ありましたらご連絡いただけると大変助かります。

補足日時:2008/09/29 13:35
    • good
    • 0

Wordは使っていないのでネット上の情報によりますが、


恐らく、ワイルドカードを使用して、
[! -~]
を空白に置き換えればよいと思います。
ちなみにこれはアクセント付きアルファベットも削除します。

この回答への補足

ありがとうございます。
さっそく試してみました。きれいに削除できるのですが、
同時に、ソフトリターンも削除されてしまい、複数の英文がひとつに
なってしまう現象が起きてしまいます。
ソフトリターンは含まないやり方はご存知でしょうか。

補足日時:2008/09/25 16:51
    • good
    • 0

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

このQ&Aを見た人はこんなQ&Aも見ています


おすすめ情報