LoginSignup
3
4

More than 5 years have passed since last update.

Excelマクロで特殊文字を削除するメモ

Posted at

どうも、COBOLerです。

メインフレームのデータを某開発支援ソフトでエクスポートすると、
シフトアウト(SO)・シフトイン(SI)が特殊文字で置き換わってしまいます。

エクセルに貼り付けたとき特殊文字が邪魔になるので、マクロで消したくなりました。

VBEに特殊文字を入力できず困ったのでメモします。

やりたいこと

選択範囲に含まれる特殊文字(SO・SIが置き換わったもの)を削除する
image

やったこと

SOSI削除
Sub SOSI置換()

    For Each mycell In Selection
        ' SOの削除
        mycell.Value = Replace(mycell.Value, ChrW(&HBB), "")
         ' SIの削除
        mycell.Value = Replace(mycell.Value, ChrW(&HAB), "")
    Next mycell

    MsgBox "置換しました"

End Sub

これなにしてんの?

削除したい特殊文字をソース上に記述できないので、文字コードで指定することで解決します。
文字コードのコード体系はUnicode(16進)です。

  • ChrW関数

「文字コード=>文字」の変換
16進で指定するときは、&h[16進]

特殊文字の文字コードを調べる方法は2通り。

①「挿入」タブ=>「記号と特殊文字」

image

②AscW関数

「文字=>文字コード」の変換
0~65535の値が返ってくるのでHex関数で16進に変換する

セルを選択して下記を実行

Unicode取得
Sub Unicode取得()
    MsgBox Hex(AscW(ActiveCell.Value))
End Sub

参考リンク

▼MSDNライブラリ
Chr 関数、ChrW 関数
Asc 関数、AscW 関数

3
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
4