エクセルより文字列取得

解決


プラスドライバー  2005-06-09 01:23:30  No: 90302

はじめまして プラスドライバーです。

早速なんですが エクセルファイルの読み込みで
セル内の文字列に Ò が入っているんですがそれを O(半角大文字英字)と読んでしまいます。
試しに Ò をVBのエディッタに貼り付けると今度は ? になってしまいます。
何とかならないんでしょうか?

Windows 2000
VB6.0 SP5
Excel 2000
です。
困ってます、助けてください お願いします。


ささ  2005-06-09 01:47:36  No: 90303

困っているのはわかりますが、
ためしにやってみたところ、再現しませんでした。
以下、検証した画像を張っておきます。

ウォッチ式に"Ò"と正しく表示されています。

http://bbs4.aimix-z.com/photovw.cgi?room=hanafusa&image=106.gif&btp=a12


魔界の仮面弁士  2005-06-09 03:58:18  No: 90304

》さささん
> ためしにやってみたところ、再現しませんでした。
ChrW(&HD2) の文字は、この掲示板に貼り付けると、
『Ò』になってしまうという事だと思いますよ。
http://www.rfs.jp/sitebuilder/html/other/char/char4.html

》プラスドライバーさん
> セル内の文字列に Ò が入っているんですがそれを O(半角大文字英字)と読んでしまいます。
どの時点で化けているか、再確認してみてください。実際には、
  S = oSheet.Range("A1").Value
のようにした場合、変数 S には ChrW(&HD2) の文字なども
正しく返されていると思います。
確認のため、Mid関数と AscW関数を使って、受け取った文字の
コードを調べてみてください。&HD2 の文字も存在していませんか?

なお、VB6の仕様上、ウォッチ ウィンドウ や イミディエイト ウィンドウ等は
Unicode に対応していません。(VB.NETであれば、対応していますけれども)
そのため、Shift_JIS への変換が発生して、文字化けしてしまったように
見えているのでしょう。

Unicode対応コントロールをお持ちであれば、そちらに表示して、
文字列の内容を確認してみてください。


プラスドライバー  2005-06-09 19:21:07  No: 90305

プラスドライバーです。

さささん
私の舌足らずの説明なのに、
わざわざ試していただきありがとうございました。

魔界の仮面弁士さん
>どの時点で化けているか、再確認してみてください。
>…
>コードを調べてみてください。&HD2 の文字も存在していませんか?
AscWで調べてみたところ &HD2が入ってきました。
と言うことは、VBのコードエディッタで表示される時点で化けていたと言うことなんでしょうか?
試しに、別のエクセルのセルに書き込んで見ると問題なくChrW(&HD2)の
文字列が入っていました。

今回はどこかに表示しないといけないわけではなくコード上で認識して
その文字があれば、別の文字に置き換えて別のエクセルファイルに書き込む
作業なので何とかなりそうです。
ありがとうございました。


魔界の仮面弁士  2005-06-09 19:52:31  No: 90306

> と言うことは、VBのコードエディッタで表示される時点で化けていたと言うことなんでしょうか?
そうなりますね。
VB6のコードエディタやイミディエイトウィンドウ等は、
Unicodeに対応していませんので、Shift_JISで表せない
文字が渡されると、どうしても化けてしまいます。
ちなみに、TextBox, MsgBox等もUnicode非対応です。

Win98等は、OS側がUnicodeに完全対応していないので、
VB6自体も、Unicodeには対応し切れなかったのでしょうね。

# VB.NET/VS.NETの開発環境であれば、Unicodeに対応していますが、
# その分、Win9X上には開発環境をインストールできませんね。


プラスドライバー  2005-06-10 02:01:49  No: 90307

プラスドライバーです。
魔界の仮面弁士さんフォローありがとうございます。

>文字が渡されると、どうしても化けてしまいます。
>ちなみに、TextBox, MsgBox等もUnicode非対応です。
確認するのに結構苦労します。AscWで文字コードを拾って
ListBox等に表示して確認しています。

># VB.NET/VS.NETの開発環境であれば、Unicodeに対応していますが、
残念ながらVB.NETはまだまだ購入できそうにありません。
そのうちは購入しないといけないんでしょうが。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加