2017年9月2日土曜日

Excelの表をMSAccessテーブルに貼り付けすると、欠落する

Excelで作った表をMSAccessテーブルにコピペすると、欠落するケースがあります。
状況によって事情が異なります。
  • 1行目が欠落するケース
  • 特定のカラムがカットされるケース

■ 1行目が欠落するケース

1行分が消失します。これは見出しチェックが働いて、1行目を見出しとしてカットしてしまうためです。

Access2010にてExcelからAccessテーブルへのコピー+ペーストで登録されないレコードがある。
https://answers.microsoft.com/ja-jp/msoffice/forum/msoffice_access-mso_other/access2010%E3%81%AB%E3%81%A6excel%E3%81%8B/6192e312-a292-49e3-9ce5-65e15e5238d0


■ 特定のカラムがカットされるケース

1行目以降でも発生するものです。

1.テキスト型なのに、数値だけで構成されることが多いケース

(例)テーブル定義
フィールド1 (テキスト型)
フィールド2 (テキスト型)
フィールド3 (テキスト型)

コピペするExcelのデータ
フィールド1フィールド2フィールド3
id1name1123456
id2name2123456
id3name3123ABCD

これを、MSAccessテーブルに貼り付け
フィールド1フィールド2フィールド3
id1name1123456
id2name2123456
id3name3 
フィールド3の最後の行だけ、消失しています。


2.数値だけで構成されるが、関数で出力したものを含むケース

コピペするExcelのデータ
フィールド1フィールド2フィールド3
id1name1123456
id2name2123456
id3name3123456
数値に見えるが、実際は関数が出力した文字列であったケースです。

これを、MSAccessテーブルに貼り付け
フィールド1フィールド2フィールド3
id1name1123456
id2name2123456
id3name3 
フィールド3最後の行が消失ます。

上記から、テーブルのカラム型ではなく、Excel側でコピーしたデータの型を推測している様子です。