エクセルから取得できる最大文字数は?


通りすがり  2003-11-29 06:09:24  No: 110320

開発環境は、VB6です。

質問内容:エクセルを開いて、あるフィールドの値を取得するのですが
文字数が約400ぐらいで取得してきたデータが切れてしまいます。
取得できる最大文字数は決まっているのでしょうか?

処理の例
Dim objEXCEL As Object    
Dim objBook  As Object
Dim objSheet As Object
Set objEXCEL = CreateObject("Excel.Application")
Set objBook = objEXCEL.Workbooks.Open(App.Path & "aaa.xls")
Set objSheet = objBook.Worksheets(1)
msgbox(objBook.Worksheets(1).Cells(1, 1).value)

実際は、DBに書き込みをしているのですが
確認のために、メッセージボックスとして出してみました。

エクセルからの最大取得文字数はあるのでしょうか?

また、回避する方法はあるのでしょうか?

以上です。
よろしくお願いします。


魔界の仮面弁士  2003-11-29 06:56:08  No: 110321

400文字…ですか。当方では現象を再現できませんでした。

当方で実験してみた限りでは、ExcelのValueプロパティ自体は、
32,767文字までのデータを読み書きでき、VBのMsgBoxは、
 1,023文字までのデータを表示できる事を確認しています。

# WinXP-Pro/SP1(build 2600.xpsp2.030422-1633)
# Excel 2002/SP1(Version 10.2314.3501)
# VB6(SP5)


通りすがり  2003-11-29 07:45:58  No: 110322

魔界の仮面弁士さん、さっそくの回答ありがとうございます。
自分でも調べたところ、msgboxは半角1024文字までらしいですね。

ということは、エクセルの最大文字数を
MsgBoxで確認する事はできなかったってことですよね(涙)

なので、実際起こっている問題で質問させてください。

Access2000で作成したテーブルに、
エクセルの任意のセルから持ってきたデータを格納する処理を
行っています。
フィールドの型はメモ型になってます。
rs!セルデータ = objBook.Worksheets(1).Cells(1, 1).value
というように登録すると、msgboxで切れたところと同じ場所で
データが切れてしまいます。

objBook.Worksheets(1).Cells(1, 1).value
のデータをすべてDBに格納する事は可能なのでしょうか?

以上です。
よろしくお願いします。


岡田 之仁  2003-12-01 20:09:11  No: 110323

本問題のACCESS2000 では無いのですが・・・
[ACC2002] レポートを Excel に出力するとメモ型フィールドの文字が切り詰められる
http://support.microsoft.com/default.aspx?scid=kb;ja;294286

と同様の内容だと思います。
また、VB上でのボキシングの問題もはらんでいるかと・・・
VB上で、一旦、文字列変数に代入し、それをレコードセットの
フィールドに代入するようにしてみて下さい。

尚、文字列変数に代入した際に、Len(xxx)で、文字列の長さがどう
なっているかも確認してみて下さい。

補足
VB6では、文字列変数の格納可能な長さは・・・
約 63KB までの長さの固定長文字列、
約 2GB (20 億文字) までの可変長文字列を格納できます。
とヘルプにあります。

※  可変長文字列で、2GBも格納可能な動作環境を用いるシステム
    には、一度お目にかかってみたいものですが・・・
    VB6で組むな・・・とか、そんな仕様にするな・・・
    とか言いたいですが。

以上。


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

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






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