2019年6月21日金曜日

ExcelのマクロでSQLのRecordSetを使うと「入力した値がこのテーブルまたはリストに対して定義されている設定に違反するため~」エラーが出る

ハマリました。

VBAでシートをデータベースとして使っていると、下記エラーが出る。

[Microsoft][ODBC Excel Driver]入力した値がこのテーブルまたはリストに対して定義されている設定に違反するため(たとえば、値が最小値未満か、最大値より大きい)、変更を記録できません。エラーを修正してやり直してください。

HDR=YESで、1行目をフィールド名として読み込んで使ってます。

で、たぶん、なのですが、2行目のデータの状態を型として定義しているのではないかと、思うのです。

数量 商品名
100 ホゲ
50 ほげ

こうなっていれば、問題なく数値と文字列として扱ってくれます。


数量商品名
100654
50ほげ

こうなってしまうと、商品名は「数値であるべき」として認識され、2行目の商品名を使おうとするとエラーになってしまう…のです。僕の場合。

理屈はわかりませんが、どうやら、そうらしいので、コメントよろしくお願いしますw