LoginSignup
4
4

More than 5 years have passed since last update.

EXCEL VBA Replaceで環境依存文字UNICODEを取り扱う

Posted at

1.16進コードの取得
Excelマクロで特殊文字を削除するメモ
こういう方法もあるが、今回はSplitの表記にもハマったのでメモ。

A1に機種異存文字を1文字入力
ALT+F11でVBEを開く

ascW関数の結果がおかしい
調べ方:アクティブセルに対象となる文字を入れる。
イミディエイトウィンドウにいれる。
?"&H" & hex(Ascw(range(activecell.Address).value))
これをクォーテーションなしでChrWに入れる

UnicodeがあるときのSplitの表記
普通の文字まででいったん二重引用符で綴じる。
& "," & でつなぎChrWを入れる。そのあとまた続ける場合は & "," & ChrW(&H) とする。
最後まできたら、 & 二重引用符二重引用符コンマ二重引用符コンマ二重引用符とする。
下記の例はSplitで配列に入れて、文字を消していくというのをReplaceで行う。
この時に会社の略称の記号も削除しようというものである。

vb.net

Sub replaceUni()
Dim wb As Workbook: Set wb = ThisWorkbook
Dim ws As Worksheet: Set ws = ActiveSheet
Dim buf As String
Dim R As Range
Dim Ar, i As Long
Ar = Split("株式会社,合名会社,合同会社,合資会社,一般財団法人,弁護士法人" & "," & ChrW(&H3232) & "," & ChrW(&H3231) & "", ","): Debug.Print UBound(Ar)
buf = ws.Range("C15").Value
For i = LBound(Ar) To UBound(Ar)
buf = Replace(buf, Ar(i), "", 1, -1, vbTextCompare)
Next i
Debug.Print buf
End Sub
4
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
4
4