• ベストアンサー

VBAでJIS補助漢字を扱う方法

Web上からリストを取得し、それを整形して、最終的にはメールを自動で送信するプログラムを作成しています。 既に完成して問題なく動作しているのですが、人名に一部の文字が使われているとその文字だけが"?"に置き換えられてしまうということに先日気付きました。原因は「JIS補助漢字」のせいだと分かったのですが、対応方法が分かりません。 「JIS補助漢字」 http://www.asahi-net.or.jp/~AX2S-KMTN/ref/jisx0212/index.html 例えば単純にA1のセルに「JIS補助漢字」を入れて、それをセル毎コピーするだけなら問題ありませんが、一旦変数に取り込むとその時点で"?"に置き換わってしまいます。 どんな方法からでもかまいませんのでヒントがあればご存知の方教えてください。

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

  • ベストアンサー
回答No.2

解決策ではなく、ヒントです。 VBAが対応していないわけでなく、 VBAの一部の機能が対応していません。 具体的には、ファイルの出力 や イミデぃエイトウィンドウへの 出力など。 文字列変数自体は、JIS補助漢字にも対応しているはずです。 Unicode対応したAPIを使うと、JIS補助漢字に対応できます。 セルA1に入れた文字をVBAで認識できるかの実験サンプルです。 Private Declare Function MessageBoxW Lib "user32.dll" _ (ByVal hWnd As Long, ByVal lpText As Long, ByVal lpCaption As Long, ByVal uType As Long) As Long Sub Main() Dim a As String Dim b As String a = Cells(1, 1) b = a Debug.Print b '<= VBA の IDE は Unicodeに対応できてない Debug.Print AscW(b) '<= でも、内部的にはUnicodeは維持されている Cells(2, 2) = b '<= Cellは Unicodeに対応できてる MsgBox b '<=標準のMsgBoxはUnicodeに対応しない MessageBoxW 0, StrPtr(b), StrPtr("実験"), 0 '<=Unicodeに対応したMsgBox End Sub

popesyu
質問者

お礼

サンプルコードのご提示ありがとうございます。 APIを使う工夫とCell上で直接操作するという部分を組み合わせたら何とかなりそうです。 サンプルを参考に作ったテストでも意図どおりの動作をしました。 ありがとうございました。

その他の回答 (1)

  • NOBNNN
  • ベストアンサー率50% (93/186)
回答No.1

結論からいうと VBAでのJIS補助漢字の対応はしていないようです。 詳細は以下を参照 ____________________________________________________________ 【参考】 以下は勝手ながら参考とさせていただきました。 ◆1バイト2バイト混在文字列から固定文字数を抽出 http://makotowatana.ld.infoseek.co.jp/vba.html#bite ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ >>Excelのワークシート関数は、UNICODE でも、B付きの関数で、全角半角を識別して結果を表示します。 >>ところが、VBA の文字列関数は UNICODE→Shift_JIS に自動で対応してくれないのです。 の部分をみてもらえればわかるように STRCONV でうまく変換しないと"?" になってしまいます。 私も今回しらべて勉強となりました。 特に日本語については Vista になってからまた扱いが違うとのこと。 いろいろとありそうです。 以上

popesyu
質問者

お礼

やはり標準の関数等を組み合わせたりする方法では不可ということですね。薄々そうではないかと思っていましたが、参考になりました。ありがとうございます。2番さんのAPIを使った方式を試してみたいと思います。

関連するQ&A

  • Windows7の標準サポート範囲である文字集合J

    Windows7の標準サポート範囲である文字集合JIS X 0213について確認させてください。 Windows7での標準サポート範囲はJIS X 0213の文字集合であることが分かりました。JIS X 0213の全コード表は以下のサイトの通りですが、このコード表に収録されてある記号はすべて半角の記号で全角の記号は収録されていません。例えば半角の「?」は収録されていますが 全角の「?」は収録されていません。全角の記号が収録されていない理由は何でしょうか。 また全角の記号が収録されてあるコード表などはありますでしょうか。 http://www.asahi-net.or.jp/~ax2s-kmtn/ref/jisx0213/ 以上、お手数おかけしますが、ご教授ください。

  • JIS水準外の漢字コードを知る方法

    Windows2000を使っています。 何かのプログラム処理中の変換ミスなどで出現した、 JIS第1、第2水準ではない漢字のコードを知る方法はないでしょうか。 例えばこの字ですが、 「懬」(おそらく、アップした時点で文字化けすると思います) 「やまだれ(广)」の中に「黄」、その下に「心」との字体です。 メモ帳等で保存しようとすると、?に文字化けします。 IMEパッドで、総画数19画、「コウ」「ヒロ・い」と読むことは見つけられましたが、 これの文字コードがいくつだったのかが分かりません。 (もともと、どんな文字コードが化けて、こんな文字が現れたのかを調べたりしたいのですが) ネットで検索するにも、上記同様、「?」に化けてしまいますし、 http://www.eonet.ne.jp/~kotobukispace/ddt/jisx0213/sjisfxxx.html などで、目で探しても見つけられませんでした。 (画像データなので、検索ができず・・・) 何か、良い方法がありましたら、是非ご教示ください。

  • EUC補助漢字とShift_JIS2004が扱えるテキストエディタ

    私はEmEditorを愛用していますが、EUC-JPでエンコーディングされたJIS X0212補助漢字が表示できなくてたまに困ります。 また、それとは別に、JIS X0213:2004の文字が扱えるというShift_JIS2004に興味があります。 この2つが読み書きできるフリーのテキストエディタ(それぞれ別で構いません)はありませんか? また、フリーでない場合も参考までに教えてください。 Windows環境で動くことが望ましいですが、フリーならLinuxでも一応OKです。 なお、Unicodeでこれらの文字を扱うのはEmEditorで実現できているので大丈夫です。

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

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

  • 漢字のJIS水準をエクセルを使用して調べる方法がよくわかりません。

    漢字のJIS水準をエクセルを使用して調べる方法がよくわかりません。 質問集に同様の問い合わせがあり、回答が寄せられているのですがエクセルに不案内のため、操作方法がよくわかりません。以下のような操作 >エクセルでA1セルに文字を入れ、A2セルに >=CODE(A1)と入れて下さい。 をすると結果として得られるセルの値とはどこで確認できるのですか。 またはデータを入力する前に何かセルの書式設定などが必要ですか。 結果として得られたA2のセルの値についての見方はわかるのですが・・・。 よろしくお願いいたします。

  • JIS水準漢字の選別方法教えてください

    『JIS第1・2水準漢字のみ使用にするには』 氏名入力で、JIS第1・2水準漢字のみ使用という仕様の場合、それ以外の文字をチェックする方法を教えてください。エクセルの設定がなければ、フリーソフトのダウンロードでなく、サイト機能使用できるサイトを教えてください。

  • IEにてシフト_JISに無い漢字を入力させない方法

    現在、イントラネットにて開発を行っています IEにてシフト_JIS以外の漢字が入力できるので、困っています。 禁止する方法は、何かありませんか? ※シフト_JIS以外の漢字→環境依存文字(unicode) 森鷗外のおう ※ページは、charset=Shift_JISにて指定しています

    • ベストアンサー
    • Java
  • JISの第1・第2水準以外の漢字の見つけ方

    JISの第1・第2水準内の漢字以外は使わず、 それに該当するものは平仮名、または別の漢字にして入力しなければいけない仕事があるのですが 見極め方というか、見つけ方を調べてみたところ Excel等でセルに1文字ずつ入力して見つけることはできるそうですが 何しろ入力量は相当量あるため、非常に効率的ではありません。 JISの第1・第2水準がどういうものなのかも理解していませんので 例えば、Word等で入力した文章中に 第1・第2水準以外のものがあったら印を付けてくれる、色を変えてくれるとか そういったフリーソフト等ありませんでしょうか? Windows7を使っていますが7対応ではないフリーソフトでも構いませんので教えて下さい。 (まったく動作しない可能性も無くは無いので)

  • 補助漢字入力不可にする方法

    Windows2000パソコンで、JISの第1水準・第2水準以外の登録されている旧漢字(IMEパッド文字一覧「漢字3」にある"髙:はしご高"など)を入力できなくする(削除する)方法はないのでしょうか?宜しくお願いします。

  • JISコードをシフトJISコードに変換する方法

    紙とえんぴつを使ってJISコードをシフトJISコードに変換する方法を教えてください。 たしか16進数の変換などを使って出来ると聞いたことがあります。 一文字の漢字だけで良いんです。 例えば『高』という漢字のJISコード「3962」をシフトJISコード「8D62」に変換したいというわけです。 2進数や16進数の計算の知識だけはあります。よろしくお願いします。

専門家に質問してみよう