#667 VBAのコードに環境依存文字(特殊文字)を記述するには? VBA

環境依存文字(特殊文字)の中には、「(株)」(実際は1文字)のようにモジュールのコード上に直接入力可能な文字もありますが、中にはそれを入力すると「?」に文字化けしてしまい記述できないものもあります。たとえば「copyrightを表す”丸にC”」や「立方メールの”mに3”」、「1文字の”(1)”」などです。

これらの文字をプログラムのコード内に記述したい場合、それを直接入力するのではなく、その文字の「16進数表記」と『ChrW』関数を使うことで対処することができます。

たとえば、テーブルに1件のレコードを追加するSQL文を例にとると、下記のような書き方をします。
   ※ここでは「テーブル1」の「Data」フィールドにデータを書き込んでいます。

Dim dbs As Database
Dim strSQL As String

Set dbs = CurrentDb

'copyrightの"丸にC"
strSQL = "INSERT INTO テーブル1 (Data) VALUES ('" & ChrW(&HA9) & "')"
dbs.Execute strSQL

'立方メールの"mに3"
strSQL = "INSERT INTO テーブル1 (Data) VALUES ('" & ChrW(&H33A5) & "')"
dbs.Execute strSQL

'1文字の"(1)"
strSQL = "INSERT INTO テーブル1 (Data) VALUES ('" & ChrW(&H2474) & "')"
dbs.Execute strSQL

'登録商標の"丸にR"
strSQL = "INSERT INTO テーブル1 (Data) VALUES ('" & ChrW(&HAE) & "')"
dbs.Execute strSQL

'温泉のマーク
strSQL = "INSERT INTO テーブル1 (Data) VALUES ('" & ChrW(&H2668) & "')"
dbs.Execute strSQL

'丸に〒
strSQL = "INSERT INTO テーブル1 (Data) VALUES ('" & ChrW(&H3036) & "')"
dbs.Execute strSQL


実行結果:



ここで、記述したい特殊文字の”16進数表記”をどのように調べるかですが、コード上に記述できないので当然イミディエイトウィンドウ上で関数を実行して調べるといったこともできません。

そこで、ひとつの方法としてExcelを利用します。
次のような手順で16進数を取得し、所定の数値を上記のようなコード上にコピー&ペーストします。
  1. Excelのリボンより[挿入]-[記号と特殊文字]を選択する

  2. 「記号と特殊文字」画面が表示されるので、画面上部でコードに記述したい特殊文字を探す

  3. その文字を選択すると画面下部の「文字コード」の欄に16進数が表示されるので、それをコピーする


  4. VBAのコードにおいて、「ChrW(&H****)」の「****」の部分にペーストする
    ※「&H」はその右の値が16進数であることを表します。
    ※「00A9」のようにゼロで始まる場合は、ペースト後、先頭のゼロが省略され自動的に「A9」になります。
| Index | Prev | Next |

この情報は参考になりましたか?、問題は解決しましたか?、もしまだなら......
T'sWareのワンポイトテクニカルアドバイスをご利用ください。3000円/件〜でご支援します。
スタンドアロンからSQL Server対応まで、オーダーメイドのシステムを短納期・安価でお届けします


Copyright © T'sWare All rights reserved