開発環境は、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に書き込みをしているのですが
確認のために、メッセージボックスとして出してみました。
エクセルからの最大取得文字数はあるのでしょうか?
また、回避する方法はあるのでしょうか?
以上です。
よろしくお願いします。
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)
魔界の仮面弁士さん、さっそくの回答ありがとうございます。
自分でも調べたところ、msgboxは半角1024文字までらしいですね。
ということは、エクセルの最大文字数を
MsgBoxで確認する事はできなかったってことですよね(涙)
なので、実際起こっている問題で質問させてください。
Access2000で作成したテーブルに、
エクセルの任意のセルから持ってきたデータを格納する処理を
行っています。
フィールドの型はメモ型になってます。
rs!セルデータ = objBook.Worksheets(1).Cells(1, 1).value
というように登録すると、msgboxで切れたところと同じ場所で
データが切れてしまいます。
objBook.Worksheets(1).Cells(1, 1).value
のデータをすべてDBに格納する事は可能なのでしょうか?
以上です。
よろしくお願いします。
本問題のACCESS2000 では無いのですが・・・
[ACC2002] レポートを Excel に出力するとメモ型フィールドの文字が切り詰められる
http://support.microsoft.com/default.aspx?scid=kb;ja;294286
と同様の内容だと思います。
また、VB上でのボキシングの問題もはらんでいるかと・・・
VB上で、一旦、文字列変数に代入し、それをレコードセットの
フィールドに代入するようにしてみて下さい。
尚、文字列変数に代入した際に、Len(xxx)で、文字列の長さがどう
なっているかも確認してみて下さい。
補足
VB6では、文字列変数の格納可能な長さは・・・
約 63KB までの長さの固定長文字列、
約 2GB (20 億文字) までの可変長文字列を格納できます。
とヘルプにあります。
※ 可変長文字列で、2GBも格納可能な動作環境を用いるシステム
には、一度お目にかかってみたいものですが・・・
VB6で組むな・・・とか、そんな仕様にするな・・・
とか言いたいですが。
以上。
ツイート | ![]() |