はじめまして、shinと申します。
以下のコードで、エクセルのワークシート全体のデータをレコードセットに
格納しようとしました。
Set db = ws.OpenDatabase(strPath, False, False, "Excel 8.0;HDR=NO;")
Set rs = db.OpenRecordset("Sheet1$")
しかし、一部データがレコードセットに格納されずNull値になってしまいました。
原因を調べたところ、おそらくレコードセットのFieldのSizeが
違っていたからだと思われます。
FieldのSizeが255に設定されているものと、8に設定されているものがあり、
8のFieldに格納されるデータのSizeが8を超えていたためにNull値になっていたと思われます。
ワークシートのデータを格納する前に、
レコードセットのFieldのSizeを255に統一しておく方法はありませんか?
もしくは、この問題を解決する方法が思いつく方、お助けください。
よろしくお願いします。
PRB: Excel Values Returned as NULL Using DAO OpenRecordset
http://support.microsoft.com/default.aspx?scid=kb;EN-US;194124
デフォルトでは、
先頭8行目までで数値型なのか文字列型なのかを自動判別します。
その結果、数値型と認識されたフィールド出現する文字列データはNullになります。
回避策としては、
IMEX=1 を追加して、強制的に文字列型として認識させる方法があります。
Set db = ws.OpenDatabase(strPath, False, False, _
"Excel 8.0;HDR=NO;IMEX=1;")
としてみてください。
だい様、アドバイス通りにコードを変更したところ、
うまくデータを取得することができました。
ありがとうございました!!
ツイート | ![]() |