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

このQ&Aに関連する最新のQ&A

A 回答 (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
    • good
    • 1
この回答へのお礼

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

お礼日時:2001/06/16 08:39

先ほどの回答は早とちりしていました。

シート上で行ってしまい、質問に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
    • good
    • 0

ツール→アドインで分析ツールにチェックを入れます。


HEX2DECを使えるようにします。
=CHAR(HEX2DEC(3021))
で出ると思います。
分析ツールを使わない場合は、=CHAR(16進数3021を10進数にした数値)ででます。
    • good
    • 0
この回答へのお礼

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

お礼日時:2001/06/15 19:11

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QJIS第三水準の漢字を手書き入力で引き出す方法。

JIS第三水準の漢字を手書き入力で引き出す方法。

私の苗字の正式な漢字が第三水準にありますが、この字を出してくる方法がわかりません。
http://www.microsoft.com/japan/windows/products/windowsvista/jp_font/jis04/default.mspx
上記URLでWindowsXp用をダウンロードし、自分のパソコンで使うことは何とかできます。
*ホームページ上でその漢字をコピーし「単語の登録」をしましたので自分のパソコンでは使えるのですが、漢字そのものを引き出す方法がわかりません。
入力ソフトはIMEスタンダード2003です。

手書き入力でも出てきません、考えられるすべての読みを変換してみましたがだめでした。
人名/地名も試してみました。

Aベストアンサー

いくつか方法がありますが、U+文字コードの変換をお勧めします。
これはMS-IMEの2003までで使える方法です。
例えば目的の字の文字コードが「4E00」だったとします。
日本語入力がONの状態で「U」「4」「E」「0」「0」と打ち(表示は「う4え00」)、F5を押すと漢字に変換されます。
この方法に使うための文字コードはUnicodeと呼ばれるもので、No1さんの回答にあった文字コード(こちらはShift_JIS)とは別のものです。
Unicodeの文字コードを求めるのはその文字が既にPC上で表示できているのなら簡単です。
例えばこちらで変換できます。
http://wentwayup.tamaliver.jp/e88223.html

一応他の方法も紹介しておきます。
・MS-IME2007
2007では2003までと違い、文字コードを打ってスペースで変換できるようになりました。
「4」「E」「0」「0」「スペース」で変換できるのですが、普通は文節区切りが不適当なのでそれを直す手間がかかり不便です。
・ATOK
ATOKでは変換できる文字種が多いので、多分その字も普通に変換できます。
手書きパッドでもいけると思います。
・Alt+X
WordおよびWordpadのみで使える機能です。
文字コードを半角英数で打ち、Alt+Xを押すとそのコードの字に変わります。
どんな方法でもいいので「4e00」と並んだ文字の右にカーソルを置き、Alt+X。
・Alt+テンキー
こちらもWordおよびWordpadのみです。
Altを押しながら、Unicodeのコード番号を10進に直したものをテンキーから入力します。
Alt押下、1、9、9、6、8、Alt開放。

なお、No1でのお礼文に事実誤認があったので指摘しようとしたのですが、サイトが重くエラーが出ましたので後ほどまた書き込みます。

いくつか方法がありますが、U+文字コードの変換をお勧めします。
これはMS-IMEの2003までで使える方法です。
例えば目的の字の文字コードが「4E00」だったとします。
日本語入力がONの状態で「U」「4」「E」「0」「0」と打ち(表示は「う4え00」)、F5を押すと漢字に変換されます。
この方法に使うための文字コードはUnicodeと呼ばれるもので、No1さんの回答にあった文字コード(こちらはShift_JIS)とは別のものです。
Unicodeの文字コードを求めるのはその文字が既にPC上で表示できているのなら簡単です。
...続きを読む

QChr関数のラインフィールド文字って?

EXCEL2000のVBAを勉強しているものです。
Chr関数のラインフィールド文字ってどんなことが
できるのでしょうか?調べると「復帰」とかかれているのですが・・
実際に使ってみても何がどう変わっているのかがわかりません。
chr(10)
とすると、どうなるのでしょうか?教えてください。
よろしくお願いいたします。

Aベストアンサー

こんにちは。maruru01です。

文字コード10のラインフィードは、Excelではセル内改行になります。
セルの書式設定の[配置]で、[折り返して全体を表示する]にチェックをしておいて、
そのセルに、

Range("A1").Value = "1行目" & Chr(10) & "2行目"

と書き込むと、セル内改行されます。
ちなみにVBの定数を使用して、

Range("A1").Value = "1行目" & vbLf & "2行目"

とも出来ます。

なお、通常のWindows改行は、Chr(13) & Chr(10)で、VBの定数は、「vbCrLf」ですが、これを使用して、

Range("A1").Value = "1行目" & vbCrLf & "2行目"

とすると、セルの表示は、

1行目・
2行目

という風に、Chr(13)が表示出来ずに、中黒になってしまいます。

Q手書き入力ですら表示されない漢字を使いたい場合

新しく単語登録しなくてはいけないと思うのですが、表示の仕様がないですよね…。
何かソフトをインストールする必要がありますか?

Aベストアンサー

ウィンドウズの「外字エディタ」を使いましょう
「へん」や「つくり」、また似たような字を合成して作ります
(使いたいフォント毎に作る必要はありますし、ものすごく
複雑な字はちょっと面倒ですけど)
外字エディタの使い方
http://www.gon-net.jp/windows/gaizi/gaizi.htm

Q小文字の英数文字列の漢字登録で大文字も表示される。

IME2000を使っています。
例えば、
aaa@***.co.jp を「アドレス」という読み方で登録すると
漢字変換すると
AAA@***.CO.JP や
Aaa@***.co.jp や
AAA@***.CO.JP(全角)
も一緒に候補として出てきます。
余計な候補表示を消す、または、出てこなくするような登録方法は無いでしょうか?

Aベストアンサー

よく言われているのは、品詞を「顔文字」として登録することです。

ちなみに、2000のような変換は、2002だと出なくなります。

Q戸籍上の漢字入力

Wordをつかっていて、戸籍上の名前を入力することになり、
木+有+同
で「はし」とよむ漢字を入力したいのですが、
ATOKの文字パレットや手書き文字入力でもでず、
IMEのIMEパットでも手書き入力でもでませんでした。
どうしてもこの漢字を入力したいのですが、方法はありますでしょうか?
よろしくお願いします。

Aベストアンサー

似た字がいくつかありますので、正確な字体を確認する必要があります。
[有]の下は[同]ではなく、[冂]の中に[口]ではないでしょうか([一]が無い)?
http://www.dynacw.co.jp/dynafont/truetype/jg_w.pdf
#F3ACの字は[有]がその形のまま[冂]の上に乗っていて隙間がある字形
です。
#F3A8の字は[有]と[冂]が隙間無く結合した字形です。
これは市販の楷書体フォントで外字付きのものですが、この二つの字体なら、明朝とゴシックだけですが、下記のサイトから外字ファイルをダウンロードすれば使えるようになります。
http://gaiji.info/
前者の字体は#F05F、後者の字体は#F061にあります。

Qアクセス レポート テキストボックスの文字配置は文字数で自動的に文字配置の変更可能ですか

現在アクセスに入力されているテーブルのデーターをもとに書道展のキャプションを作成中です
タイトルと作家の名前を表示させますがタイトルが1文字数から13文字数くらいまでと様々なため
テキストボックスの文字配置が均等割り付けだと文字数の多いタイトルは2段目が間延びしておかしいです
例えば8文字までだと均等割り付けそれ以上だと左揃えなどということが可能でしょうか?
他に良い方法があれば教えてくださいよろしくお願いします
Wordの差し込み文章のように一枚ごとの編集が出来ればいうことなしなのですが?それはあり得ませんか?

Aベストアンサー

> イベントプロシージャには文字数が多くなれば自動で2行にになり字も小さくなるための式がかかれています

こちらでしょうか?

テキストボックス内の文字を自動で縮小して全体を表示
http://hatenachips.blog34.fc2.com/blog-entry-11.html

上記の例なら

Private Sub 詳細_Format(Cancel As Integer, FormatCount As Integer)
  AutoFontSize Me.テキストボックス名, 12
  If Len(Me.テキストボックス名) <= 8 Then
    Me.テキストボックス名.TextAlign = 4 '均等割り付け
  Else
    Me.テキストボックス名.TextAlign = 1 '左揃え
  End If
End Sub

のようになります。


> ユーザー定義関数名、「イベントプロシージャ」以外の式が指定されていますとなりました。

加えた変更を元に戻してもエラーになりますか?

とりあえず、コンパイルしてエラーが無いことを確認してください。

経験上、Access のバージョンにもよりますが、
デザインビュー以外で表示しているときに VBA の修正をしたりすると
このエラーが出ることが多いような気がしています。

> イベントプロシージャには文字数が多くなれば自動で2行にになり字も小さくなるための式がかかれています

こちらでしょうか?

テキストボックス内の文字を自動で縮小して全体を表示
http://hatenachips.blog34.fc2.com/blog-entry-11.html

上記の例なら

Private Sub 詳細_Format(Cancel As Integer, FormatCount As Integer)
  AutoFontSize Me.テキストボックス名, 12
  If Len(Me.テキストボックス名) <= 8 Then
    Me.テキストボックス名.TextAlign = 4 '均等割り付け
  Else
    Me.テ...続きを読む

Qことえりでの旧漢字入力方法

Macのことえりで旧漢字を入力したのですが、そのまま日本語を入力し変換では出てきません。
WinのIMEもそうですがその場合は、手書きのパレットで書いて出しています。
MacのことえりもIMEのような手書きのパレットかあるのでしょうか?
文字パレットでみても部首で検索とかしか出来ないみたいで困ってます。
それでは見つからなかった。
他に旧漢字とか入力する方法とかあるのでしょうか?
教えてください。

Aベストアンサー

Macでは手書きパレットのような機能は無かったはずです

文字パレットだと「JISコード」(だったと思います)などで面倒くさいですが、探してみる方法もあります

あとビブロスのコード表などで探す方法もあります
でもフォントをつんでなければ意味ありませんが(汗)

上記はクラッシック環境での話しなので、OSXのOpenTypeではまた違うと思いますので、調べてみます

QACCESSのVBAで2バイト文字を%xxの形に変換する方法

例えば"教えて!goo"の検索で「コード変換」で検索をすると、アドレスには以下のURLが表示されます。
http://oshiete.goo.ne.jp/search/search.php?status=select&MT=%A5%B3%A1%BC%A5%C9%CA%D1%B4%B9&ct_select=1&ct0=207&ct1=218&ct2=232

"%A5%B3%A1%BC%A5%C9%CA%D1%B4%B9"の部分が「コード変換」という文字を表しているのだと思いますが、この変換処理をACCESSのVBAで行う方法はありませんでしょうか?

よろしくお願いいたします。

Aベストアンサー

http://133.53.64.43/tonoike/computer/vb/otheroriginal.asp

URLエンコード・デコードを試してみてください。

QiPhone3Gで漢字の手書き検索はできますか?

わからない漢字の読み方を調べる時に使いたいんですが
iPhone 3Gで手書き入力の漢字の検索ができるソフトはありますか?

Aベストアンサー

http://netafull.net/iphone/026796.html
上記のように操作すれば、手書きで漢字を入力できるそうです。
あとは、Gooあたりの辞書検索で調べれば良いかと。
http://dictionary.goo.ne.jp/

Q亜フィル形式とはどのような形式ですか?

亜フィル形式とはどのような形式ですか?

Aベストアンサー

土木用語でダムの形式に「ロックフィル形式」というのがあるのは聞いたことがありますが、「亜フィル形式」って、これまで見たことも聞いたことも無い言葉です。
jun198181 さんは、どんな文脈のなかでその言葉に遭遇したのでしょうか?
それによっては識者から何らかのの回答がつくかもしれません。

回答にならなくてすみません。
(^^;;


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング