どうも、COBOLerです。
メインフレームのデータを某開発支援ソフトでエクスポートすると、
シフトアウト(SO)・シフトイン(SI)が特殊文字で置き換わってしまいます。
エクセルに貼り付けたとき特殊文字が邪魔になるので、マクロで消したくなりました。
VBEに特殊文字を入力できず困ったのでメモします。
やりたいこと
選択範囲に含まれる特殊文字(SO・SIが置き換わったもの)を削除する
やったこと
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通り。
①「挿入」タブ=>「記号と特殊文字」
②AscW関数
「文字=>文字コード」の変換
0~65535の値が返ってくるのでHex関数で16進に変換する
セルを選択して下記を実行
Unicode取得
Sub Unicode取得()
MsgBox Hex(AscW(ActiveCell.Value))
End Sub
参考リンク
▼MSDNライブラリ
Chr 関数、ChrW 関数
Asc 関数、AscW 関数