• ベストアンサー

VBAでコードから漢字に変換するのは

VBAを使用していますが、コードから漢字を求める方法が見つかりません。 たとえば、3021から漢字の亜を求めたいのですが。 1バイト文字ならChr関数で求められますが、2バイト文字、つまり、漢字を求める方法が見つからないのです。 どなたか教えていただきたいのですが。

質問者が選んだベストアンサー

  • ベストアンサー
  • nishi6
  • ベストアンサー率67% (869/1280)
回答No.3

一人で回答を汚しています。すいません。 一応、VBAの中だけでできました。JisからShiftJisに変換しています。何個かの漢字で確かめましたが全部ではないので何かあるかも・・・ Sub jiscode2Kanji() Dim kjCD As String kjCD = "3021" '*** これをセット *** Jis2ShiftJis Val("&H" & Mid(kjCD, 1, 2)), Val("&H" & Mid(kjCD, 3, 2)) End Sub Sub Jis2ShiftJis(HiByt As Double, LoByt As Double) '下位バイト If HiByt And 1 Then If LoByt < &H60 Then LoByt = LoByt + &H1F Else LoByt = LoByt + &H20 End If Else LoByt = LoByt + &H7E End If '上位バイト If HiByt < &H5F Then HiByt = (HiByt + &HE1) \ 2 Else HiByt = (HiByt + &H161) \ 2 End If '漢字 Dim knjCode As Double knjCode = HiByt * &H100 + LoByt If knjCode < 0 Then knjCode = knjCode + 65536 End If Range("A1") = Chr(knjCode) End Sub

yamamichi
質問者

お礼

何度も回答ありがとうございます。 こんな時間に回答していただけるなんてとても感謝しております。  早速、実行してみました。 OKです。 それで、漢字一覧表を作成し、全件で確認しました。 そうしたら、1点だけ問題がありました。 それは、上位バイトが奇数で、下位バイトが7Fでも漢字を取得しています。 連続して次のコードも取得しています。 つまり、たとえば押はJISコードが3221ですが317Fでも現れ、応は317Eですが3220でも出てくるのです。 同様に、前述の上位バイトが奇数のときに最後の拡張漢字7B7Fと7C20でも出てきます。 ですが、これは、私にもカットできるので、本当にありがとうございました。 ゆっくりお休みください。  「マスターに推薦」したいのですが、初めてなので、どのようにしたらいいのかわかりません。次回になると思いますが、悪しからず。 とりあえずお礼まで。

その他の回答 (2)

  • nishi6
  • ベストアンサー率67% (869/1280)
回答No.2

先ほどの回答は早とちりしていました。シート上で行ってしまい、質問にVBA・・・があるのを見落としていました。16進数を10進数に変換することを簡単に行うためにアドインを持ち出してしまいました。問題はこれではなかったようです。すいませんでした。 シート上なら、3021(16進数)を10進数(12321)に直して、Char(12321)で亜が出ます。 気になったのでVBAで行ってみたら、なるほど、うまくいきません。色々行ってみましたが???です。シートでなら簡単なので、苦し紛れに下記を書いてみました。VBAを使っていることになるのかどうか分かりませんが、例として、A1に16進数を書き込み、B1に=Char(A1)を書いておき、VBA側でRange("B1")で値を拾っています。 これも回答になっていないと思いますが参考程度にして下さい。また調べてみます。 他の方からいい回答がきますように。 'A1に16進数を入れて、B1にはあらかじめ「=Char(A1)」をセットしています Sub Code2Kanji() Dim i As Integer 'カウンタ Dim cd As Integer '漢字コード Dim cd2Kanji As String 'その漢字 Dim cdHex As Long 'cdを16進数に cd = 3021 For i = 1 To 4 cdHex = cdHex * 16 + Mid(cd, i, 1) Next Range("A1") = cdHex cd2Kanji = Range("B1") Debug.Print cd2Kanji End Sub

  • nishi6
  • ベストアンサー率67% (869/1280)
回答No.1

ツール→アドインで分析ツールにチェックを入れます。 HEX2DECを使えるようにします。 =CHAR(HEX2DEC(3021)) で出ると思います。 分析ツールを使わない場合は、=CHAR(16進数3021を10進数にした数値)ででます。

yamamichi
質問者

お礼

早速の回答ありがとうございます。 初めての質問だったのでとても驚いています。 そこで、早速やってみました。ですが、分析ツールを使わないでも出来るとのことなので、Char関数を使ってみたのですが、コンパイルエラーになります。  そこで、ツール->アドインを使用としたのですが、ツールの下にはアドインはなく、アドインはツールと並んでありますが、その中には分析ツールにチェックするような項目はありませんでした。 AccessとExcelの両方を見たのですが同様でした。  そこでまた、Char関数をヘルプで覗いたところ、msowcf.dllファイルをインストールする必要があるとあり、ファイルは見つかったのですが、インストールの仕方がわかりません。 お手数ですが、インストールする方法を教えていただきたいのです。 よろしくお願いいたします。

関連するQ&A

  • VBAで文字コードを取り出したい

    セルに取り込んだ文字列にスペースが含まれ、VBAの" "で読まれません。関数で=CODE(B1)により取り込むと文字コード160です。 VBAで文字コード160で識別したいのですが、chr()などを試してエラーになります。 セル内の文字からmidで取り出したスペース(コード160)を、コード番号で識別してifを使って排除したいのですが、素人ですので、マクロがうまく作れません。 混乱していますが、よろしくお願いします。

  • エクセルの漢字コードを教えてください

    漢字コードから、RANDBETWEEN関数を使って漢字をランダムに表示させたい。 CHAR関数を使って亜と和のコードを調べたら12321と20307だと分かったが、 この間にブランクがかなりあるみたいで、RANDBETWEEN関数でコードを指定しても エラー表示になる場合が多い。 漢字コードが一覧表になっているのがあれば一番いのですが。 よろしくお願いします。

  • 漢字コードの変換について

    漢字コードの変換について 1. インターネットで漢字等の二バイト文字で検索すると、漢字が変換されているようです。 "画像"の場合"%E7%94%BB%E5%83%8F"と、変換されます。 この変換は何でしょうか? 2. htmlのファイル名には漢字を使用できませんが、漢字をこのように変換すると使用できるのでしょうか? 3. 変換する(フリー)ソフトは有るのでしょうか?

  • vb.net 文字コードから漢字へ変換

    vb .net で文字コードから漢字へ変換する方法を教えて下さい。 例えば 「花」という漢字のコードが"82b1" これを、表示させるために me.TextBox1.Text = 関数的なモノ("82b1") というような事はできますか? さらに、 「花」という漢字の異体字で草冠が++になっている文字が "82b1"+"e0103" これを、表示させるために me.TextBox1.Text = 関数的なモノ("82b1","e0103") というような事はできますか? ※IVS対応フォントと環境は既にあるものとします。

  • =code(" ") で値が160となる文字をEXCEL VBAで消したい

    EXCEL2002です。 あるセルに半角スペースを入力し、マクロで Cells.Replace Chr(&H20), "" と走らせるときれいに消えてくれます。ちなみにこの半角スペースを=code(" ")で調べると値は32となります。 同じやり方で=code(" ")で調べると160の値となる文字があります。これはスペースのようですが、半角でも全角のスペースでもないようです。 この文字をVBAの上記の方法で消したい場合にCells.Replace Chr(xxxx), "" ←xxxxの部分は何といれたらよいのでしょうか?

  • EXCEL VBAにて、WORDへ置換

    EXCEL VBAにて、WORD文書への文字列置換を行っております。 文字列の置換自体はできています。 が、 置換文字列に「改行」(vbCRやvbLF)をいれて置換すると、 word側での表示が□になってしまいます。 vbCrだけでもvbLFだけでも、vbCRLFでも□と表示されてしまいました。 chr(13) & chr(10)でも□になりました。 EXCEL VBA にて WORDへ文字列置換する場合に送る、改行コード (たぶん「^p」と予測をつけているのですが)を chr関数等での 表示方法を教えてください。 EXCEL2003 WORD2003 よろしくお願いします。

  • 2バイト文字をASCIIコードに変換

    SQL Server初心者です。 SQL Serverで2バイト文字をASCIIコードの値で返したいのですが、関数ASCII()を使用すると、1バイト目のASCIIコードの値しか返してくれません。 2バイト目の文字も返す方法をご教授ください。 言葉足らずでわかりにくいかと思いますが、よろしくお願い致します。

  • コード変換について

    はじめまして VB初心者です。 以下のような処理を行いたいのですがご教授願います。 項目A(漢字10文字)があります。 項目Aの中には外字で作成した漢字が埋もれています。 項目Aを参照し、そこにある外字コードを判断し 別の外字コードに変換したい。 ロジック的には1文字(2バイト)を読み込み 外字をバイナリ判定して別のコードに置き換えする 処理をしたい。 当方vb6.0ですが 定義の方法、ロジックなど教えていただければ幸いです。

  • VBAコードの読み方(音読)について教えて下さい

    こんにちは、VBAを学び中(かなり初心者)なのですが、VBAのコードの読み方が分かりません。 関数名などに出てくるものや英単語的に読めるものは良いのですが、そうでないものについて知りたいです。 普段テキストを使用しているのですが読みまでは書いてないですし、 周りの方に聞くにも、あいまいな回答しか返ってこない事が多いです。 覚えるのにもやはり読み方が分からないと覚えづらいです。困っています。 みなさんはどの様にして学ばれているのでしょうか? VBAコードの読み方の一覧が掲載されているサイトや書籍などをご存知でしたら、教えて下さい。 宜しくお願い致します。

  • googleなどの漢字コード

    友だちに頼まれてアクセスログの解析プログラムを作ろうとしているんですが サーチエンジンの検索キーの漢字変換で困っています %xx%xxとかなっているやつですが yahooやgooの漢字変換は出来たんですが googleやmsnのやつが解りません、3バイトコードのようなんですが ご存知の方おられましたらご教授お願いします。 言語は、excelのVBAでやってます。

専門家に質問してみよう