• 締切済み

2バイト文字を一括削除するマクロ

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

みんなの回答

  • TTak
  • ベストアンサー率52% (206/389)
回答No.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

  • TTak
  • ベストアンサー率52% (206/389)
回答No.2

ドキュメントの各文字を順々にLenB関数でチェックしてゆく方法があります。 Function LenMbcs(ByVal str As String) '2バイト判別Function  LenMbcs = LenB(StrConv(str, vbFromUnicode)) End Function ただ、これをループ処理にかけ、削除してゆくことになりますが、長文になると遅くなります。 試してみては如何でしょう。

200010C
質問者

補足

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

  • SortaNerd
  • ベストアンサー率43% (1185/2748)
回答No.1

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

200010C
質問者

補足

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

関連するQ&A

専門家に質問してみよう