• 締切済み

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

  • 2バイト文字を検出するマクロってありませんか?

    会社で海外用のWORD文書を作るのですが、 2バイト文字は使わないようにするのが一般的ですよね。 でも2バイト文字チェックマクロで、以前から持っていたマクロでは引っかかり、新しく配布された方では引っかからない文字があって、 どちらが正解なのか判断に困りました。 TimesNewRoman の特殊文字「×」は、2バイトみたいですね。 主にTimesNewRomanとSymbolフォントを使うのですが、 両方とも英語フォントだから2バイト文字は通常ない気がするのに、 あるものなんですね? その文字が2バイトなのか、1バイトなのか、 すぐにわかる方法ありませんか? また、WORDの文書で使うマクロ、どこかで配布されてませんか?

  • Wordの日本語全角文字・半角カタカタ文字の見つけ方

    海外向けの文書を作成中で、日本語から英語に翻訳しているのですが、頁数が多いため、分担して翻訳してます。 ところが、もとのワードファイルに上書きしているため、 2バイトの文字(日本語全角文字・半角カタカタ文字)が混在しているようです。英語圏ですと2バイトは見れませんので、1バイトにしなければなりません。 見た目は、英文ですので、見つけるのに時間がかかります。 何か簡単に見つける方法はないでしょうか?

  • EmEditorでマクロ? 選択文字列を含む行の一括削除

    テキストエディタとしてEmEditorを使用しています。 「ある文字列」を全て削除する場合は置換を使えばできますが、 「ある文字列を含む行」を全て削除するにはどうすればよいのでしょうか。 マクロ機能を使用すればできるのではないかと思いましたが、 私は、マクロの記録/停止で実際に行った操作を記憶させる方法しか使ったことがなく、 この方法では上手くできませんでした。 文章中から任意の文字列を選択し、マクロの実行で文字列が含まれる行を一括削除 ということを行いたいです。 このようなマクロをご存じでしたら教えて頂けないでしょうか。 あるいは、これらのことは置換のみでもできるのでしょうか。

  • 名前を一括削除するマクロ

    次のようなマクロを組んで、エクセルファイル上の「名前」を一括削除しようとしています。 For Each objName In ActiveWorkbook.Names objName.Delete Next 実行すると 「実行時エラー"1004":その名前は正しくありません」 というエラーになってしまいます。 名前を一括削除する方法、またはエラーの解決方法がわかれば教えてください。 環境:WindowsXP+Excel2003

  • ファイル名の韓国語文字を一括削除または変換する方法

    動画をダウンロードしたファイル名の中に 韓国語が含まれているのですが 韓国語の文字だけを削除または1文字の_に変換したいのですが ファイルがたくさんあるため手で1つ1つリネームする のはかなり手間です。 一括して複数のファイルのファイル名の中の韓国語だけを 削除または1文字の_に変換する方法、または、 フリーのソフトウェアがありましたら教えてください。 「Flexible Renamer」「As/R」なども 自分なりに試してみたのですが、 変換前の文字列として、 韓国語を指定する方法がよく分かりません。 (例) ABCDEFG(이브hijk돌스lmn파)日本語(짝1호)かな(1).mp4 を ABCDEFG(hijklmn)日本語(1)かな(1).mp4 または ABCDEFG(_hijk_lmn_)日本語(_1_)かな(1).mp4

  • 全角文字どうし間の半角スペースの一括削除

    Word の Doc 文書で、全角文字どうし間の半角スペースを一括削除するにはどうすれば良いでしょうか。Word のバージョンは 2000 か 2003 です。あるいは、何か便利なフリーウェアのツールはありませんか。Vector や Nifty ダウンロードなどを探しましたが、見当たりませんでした。

  • マクロのプロシージャ内のコメントを一括削除できますか?

    こんばんは 表題のとおり、マクロのプロシージャ内のコメントを一括削除する事はできるのでしょうか?

  • Excel VBA 決まった文字以外を一括削除

    勤務表を作成しています。 赤いセル「/。」は、希望休です。 勤務表の組み直しを行うため、希望休以外を一括で削除して空白にしたいのですが、そのようなマクロを組む事はできますか? 色で判別するよりも、入力してある文字「/。」で判別して、それ以外に入力してある文字を削除できるようにしたいです。

  • Excelで決まった文字以外を一括削除。

    勤務表を作成しています。 赤いセル「/。」は、希望休です。 勤務表の組み直しを行うため、希望休以外を一括で削除して空白にしたいのですが、そのようなマクロを組む事はできますか? 入力してある文字「/。」で判別して、それ以外に入力してある文字を削除できるようにしたいです。 J5:AN13の範囲だけを対象範囲にして削除したいです。 この範囲以外は、スタッフ氏名や行事などの入力がされていますので消したくないです。

  • Wordでカッコで括った文字を一括削除

    Word98を使っているのですけど、カッコなどで括った文字を一括して削除する方法ってありますか? たとえば、(○×△…)、(×▲○…)、(□○…)を一括して削除するとか、 <○×▲…>、<×▲…>、<■○…>を一括して削除するという意味です。

専門家に質問してみよう