-PR-
解決済み

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

  • すぐに回答を!
  • 質問No.90745
  • 閲覧数1761
  • ありがとう数4
  • 気になる数0
  • 回答数3
  • コメント数0

お礼率 71% (69/97)

VBAを使用していますが、コードから漢字を求める方法が見つかりません。
たとえば、3021から漢字の亜を求めたいのですが。
1バイト文字ならChr関数で求められますが、2バイト文字、つまり、漢字を求める方法が見つからないのです。 どなたか教えていただきたいのですが。
通報する
  • 回答数3
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

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

  • 回答No.3
レベル13

ベストアンサー率 68% (791/1163)

一人で回答を汚しています。すいません。
一応、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

お礼率 71% (69/97)

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

その他の回答 (全2件)

  • 回答No.1
レベル13

ベストアンサー率 68% (791/1163)

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

お礼率 71% (69/97)

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

  • 回答No.2
レベル13

ベストアンサー率 68% (791/1163)

先ほどの回答は早とちりしていました。シート上で行ってしまい、質問に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
このQ&Aで解決しましたか?
AIエージェント「あい」

こんにちは。AIエージェントの「あい」です。
あなたの悩みに、OKWAVE 3,500万件のQ&Aを分析して最適な回答をご提案します。

関連するQ&A
-PR-
-PR-
このやり方知ってる!同じこと困ったことある。経験を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


専門家があなたの悩みに回答!

-PR-

ピックアップ

-PR-
ページ先頭へ